J'ai créé une classe de boutons personnalisés à utiliser dans mes xibs qui est essentiellement un simple bouton avec une ombre avec une étiquette dessus. Cependant, le texte de l'étiquette est irrégulier (comme s'il n'était pas anti-aliasé). Voici mon code pour la partie pertinente de la classe (c'est une très petite classe qui hérite de UIButton).Étiquette montrant le texte en dents de scie
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self internalInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self internalInit];
}
return self;
}
- (void)internalInit {
self.backgroundColor = [UIColor colorWithRed:22/255.0 green:72/255.0 blue:143/255.0 alpha:1.0];
CGRect frame = self.frame;
frame.origin = CGPointMake(floorf(frame.origin.x), floorf(frame.origin.y));
//self.frame = CGRectIntegral(frame);
frame = self.titleLabel.frame;
frame.origin = CGPointMake(floorf(frame.origin.x), floorf(frame.origin.y));
//self.titleLabel.frame = CGRectIntegral(frame);
// Shadow
self.layer.shadowOffset = CGSizeMake(0, 1.5);
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.3;
self.layer.shouldRasterize = YES;
self.layer.shadowPath = [[UIBezierPath bezierPathWithRect:self.bounds] CGPath];
// Corner
self.layer.cornerRadius = 5;
}
J'ai essayé le dépannage du problème et je l'ai trouvé que cela peut se produire lorsque l'origine de l'étiquette ou le bouton est fixé à une valeur non entière. Cependant, j'ai vérifié la valeur absolue pour le bouton et le pixel et ils sont tous les deux mis à des valeurs entières. Je n'ai pas été en mesure de comprendre ce qui pourrait aller de travers et je ne peux pas trouver d'autres qui ont eu le même problème.