J'ai un UIToolbar
dans Interface Builder et j'ai remarqué qu'il est verrouillé à 44px de hauteur. J'aimerais bien sûr l'agrandir.
Apple autorise-t-il le redimensionnement de ce contrôle ? Si oui, comment dois-je procéder ?
J'ai un UIToolbar
dans Interface Builder et j'ai remarqué qu'il est verrouillé à 44px de hauteur. J'aimerais bien sûr l'agrandir.
Apple autorise-t-il le redimensionnement de ce contrôle ? Si oui, comment dois-je procéder ?
Non, j'ai essayé et j'ai échoué. Mais parfois, cela dépend de l'humeur quotidienne de votre homme à la pomme.
Je n'aime pas cette solution car elle entraîne le redimensionnement de la barre d'outils lors des transitions d'apparence. La solution sizeThatFits ci-dessous fonctionne mieux
Si cela ne fonctionne pas dans le SDK 6, il est possible de résoudre le problème comme ci-dessous :
Sélectionnez l'élément barre d'outils et choisissez Éditeur > Épingler > Hauteur pour créer une contrainte. Allez dans votre scène de contrôleur de vue et sélectionnez la contrainte Hauteur(44) créée, puis mettez la valeur que vous voulez.
Je suis si heureuse d'avoir trouvé ce commentaire, j'aimerais pouvoir vous voter mille fois plus. J'ai passé beaucoup trop de temps à essayer de comprendre ce code.
Xcode 8 a cette capacité. Je ne suis pas sûr de ce qui s'est passé entre les différentes versions.
J'ai constaté que si je définissais le cadre sur l'iPad, lorsque je cachais/affichais la barre d'outils, elle revenait à une hauteur de 44 pixels. J'ai fini par devoir remplacer UIToolbar et modifier la méthode :
// return 'best' size to fit given size. does not actually resize view. Default is return existing view size
- (CGSize)sizeThatFits:(CGSize)size {
CGSize result = [super sizeThatFits:size];
result.height = 55;
return result;
};
Cela permettrait de régler correctement la hauteur, même avec le système de dissimulation.
J'ai constaté que lorsque j'ai une valeur impaire pour la hauteur (en résolution non-retina), l'origine est décalée de 0,5 pixel. J'ai dû corriger les cadres des barres de navigation et d'outils dans la méthode viewDidLoad des VCs.
Bien sûr @MarqueIV, j'ai modifié sizeThatFits pour la hauteur personnalisée d'une barre de navigation (pas d'une barre d'outils) et j'ai constaté que lorsque la hauteur n'est pas un multiple de 4 points, lorsque je cache la barre de navigation et que je la réaffiche, la valeur y de son origine est de 0,5 au lieu de 0. Je ne constate pas ce comportement lorsque la hauteur personnalisée est un multiple de 4.
Dans iOS 6, avec autolayout, l'approche la plus simple est une sous-classe UIToolbar dans laquelle vous surchargez instrinsicContentSize
. Voici le code d'une de mes applications, où la barre d'outils est haute. Ses côtés et son fond sont épinglés aux côtés et au fond de la vue supérieure comme d'habitude.
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
J'aime votre solution. J'utilise la barre d'outils intégrée à UINavigationController, je ne peux donc pas la sous-classer. À la place, j'ai utilisé intrinsicContentSize
sur UIToolbar
et j'ai retrouvé la hauteur désirée.
@KyleRedfearn "J'utilise la barre d'outils intégrée à UINavigationController, je ne peux donc pas la sous-classer" Faux. initWithNavigationBarClass:toolbarClass:
vous permet d'utiliser une sous-classe de UIToolbar avec votre contrôleur de navigation.
Vous pouvez aussi simplement modifier le fichier xib :
ouvrez-le en tant que code source et trouvez l'entrée qui définit le cadre de la barre d'outils UIToolbar, quelque chose du genre
<string key="NSFrame">{{0,420}, {320,44}}</string>
et changez simplement la valeur de 44 pour la taille dont vous avez besoin.
De cette façon, la barre d'outils sera plus haute, et dans InterfaceBuilder, vous verrez la nouvelle taille en grisé et vous ne pourrez pas la modifier, mais vous n'avez pas besoin de sorties ou de code.
Cela ne semble plus fonctionner. Je viens de le tester sur XCode 5.1.1 pour un storyboard utilisant le style iOS7. Les valeurs sont réinitialisées à leurs valeurs par défaut.
Fonctionne en fait pour ios10 swift et la ligne que vous devez chercher est <constraint firstAttribute="height" constant="80" id="fZW-ej-FYO"/>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.