J'ai téléchargé une police personnalisée et appliqué cette police sur le titre d'un button UI en utilisant le code suivant
videoButton.titleLabel.font = [UIFont fontWithName:@"LaurenScript" size:20];
Le problème est que le titre est découpé en haut de la première lettre (voir photo ci-dessous). J'ai essayé la même police sur le UIlabel et cela fonctionne bien donc ce n'est pas un problème avec la police. J'ai aussi essayé de changer le rectFrame en utilisant
[videoButton.titleLabel setFrame:CGRectMake(0, 0, 300, 600)];
mais ça n'a rien fait. Quelqu'un at-il une idée de la façon dont je peux résoudre ce problème? À votre santé
J'ai eu un problème similaire, où une diaeresis a été coupée au-dessus du label. J'ai créé une sous-class UIButton et utilisé ce code pour résoudre le problème:
-(void)layoutSubviews { [super layoutSubviews]; CGRect frame = self.titleLabel.frame; frame.size.height = self.bounds.size.height; frame.origin.y = self.titleEdgeInsets.top; self.titleLabel.frame = frame; }
Sélectionnez le button dans le constructor d'interface et vérifiez pour définir un panneau d'alignment vertical dans la section de contrôle. Voici un exemple:
Je ne sais pas si c'est toujours un problème pour tout le monde, mais j'ai trouvé que (en utilisant une police personnalisée) les solutions ci-dessus n'ont pas résolu le problème, en particulier pour un UIButton
personnalisé créé uniquement par programmation.
Voici comment j'ai réussi à résoudre ce problème, avec 1 ligne en particulier qui a résolu le problème d'écrêtage:
UIButton *button = [[UIButton alloc] init]; button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setTitle:@"Nice!" forState:UIControlStateNormal]; [button setFont:[UIFont fontWithName:<CUSTOM FONT NAME> size:buttonWidth/3.0f]]; button = CGRectMake(0, 0, <WIDTH>, <HEIGHT>);
Voici la ligne qui a résolu la coupure:
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];
Espérons que cela aide quelqu'un d'autre qui était encore coincé. Codage heureux!
Il y a cette solution (sortingste): https://stackoverflow.com/a/10200908/352628
J'ai le même problème. Il semble que le titleLabel est juste très incontrôlable, et pour get le contrôle, vous devez injecter une sous-vue UILabel sur le button … Cela me rend sortingste 🙁
J'essaye ça en swift 2.1, j'adapte ce code à Antoine . Ce n'est peut-être pas un bon code mais cela résout mon problème pour le moment. Vous devriez le rendre meilleur pour vous.
import UIKit class CustomUIButton: UIButton { override func layoutSubviews() { if var titleFrame : CGRect = titleLabel?.frame{ titleFrame.size = self.bounds.size titleFrame.origin = CGPointZero self.titleLabel!.frame = titleFrame self.titleLabel!.textAlignment = .Center } } }
eu le même problème en utilisant un button avec une image et du text avec une police personnalisée. Tout devait être aligné verticalement. Et l'image n'est pas étirée. Cela a bien fonctionné pour moi.
btn.contentVerticalAlignment = .fill btn.contentMode = .center btn.imageView?.contentMode = .scaleAspectFit