police personnalisée sur le titre de l'UIbutton coupé au-dessus du mot

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é

entrez la description de l'image ici

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:

entrez la description de l'image ici

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