J'ai essayé deux façons de créer un UIButton dont le frame est égal à sa taille de contenu intrinsèque.
La première méthode est réussie:
button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTitle:@"Button" forState:UIControlStateNormal];
[[button titleLabel] setFont:[UIFont systemFontOfSize:16.0]];
[button sizeToFit];
[[self view] addSubview:button];
...et j'ai enregistré le résultat de [button frame].size
et button intrinsicContentSize]
et ils correspondent.
Quant à la deuxième méthode, j'ai fait glisser un UIButton sur une vue du Storyboard et j'ai choisi Size To Fit Content sur le bouton. Je n'ai pas défini de contraintes. Ensuite, lorsque je l'exécute avec le simulateur, le texte est coupé: https://i.sstatic.net/hnvMb.png
et j'ai enregistré ces résultats:
// Résultat: 32.000000
NSLog(@"bottomButton Frame Height: %f", [bottomButton frame].size.height);
// Résultat: 49.000000
NSLog(@"bottomButton Frame Width: %f", [bottomButton frame].size.width);
// Résultat: 32.000000
NSLog(@"bottomButton Intrinsic Content Size Height: %f", [bottomButton intrinsicContentSize].height);
// Résultat: 50.000000
NSLog(@"bottomButton Intrinsic Content Size Width: %f", [bottomButton intrinsicContentSize].width);
...ce qui semble indiquer que la largeur du frame est 1px plus grande que prévu...des idées?