web-dev-qa-db-fra.com

incohérence de hauteur iOS 7 UIDatePicker?

Je rencontre un problème étrange lorsque j'utilise des éléments UIDatePicker avec Storyboards sous iOS 7. Dans le Storyboard, le sélecteur de date a une hauteur fixe de 162. Cependant, en réalité, l'élément occupe plus d'espace. Donc ça

Storyboard

se transforme en ceci:

Simulator

je dois donc déplacer tout ce qui se trouve en dessous, deviner et deviner combien d’espace le sélecteur de date utilisera réellement. Est-ce un bug? Est-ce que je fais quelque chose de mal? Pour être clair, le sélecteur de date est totalement transparent - il est impossible de trouver une solution. Le fond blanc en haut représente UIView principal et le fond gris, l'arrière-plan de UITableView intégré à la vue du conteneur.

40
Andrew

Je peux confirmer que l’utilisation de UI(Date)Picker dans les storyboards a une hauteur différente (162,0) et dans "réalité" (216,0). Par conséquent, vous devez ajuster l'espace dans la vue conteneur pour qu'il corresponde à la "vraie" hauteur du sélecteur de date ou essayez de le résoudre à l'aide de la disposition automatique.

39
Florian Mielke

Voici une astuce amusante que je viens de trouver: placez UIDatePicker dans une vue dédiée avec une contrainte de 162 points en hauteur (ajoutez des contraintes verticales de 0 point en haut et en bas du sélecteur à cette nouvelle vue d'ensemble). Cela semble avoir pour effet de forcer le sélecteur à conserver la taille de 162 points.

Vous pouvez ajouter l'option de découpage des sous-vues pour vous assurer que le UIDatePicker n'échappera pas à sa nouvelle prison.

EDIT: après quelques tests supplémentaires, il semble qu’en ajoutant simplement une contrainte de hauteur de 162 points au UIDatePicker, il conserve sa "taille IB". Et, pour répondre au commentaire de @ Andrew, voici à quoi cela ressemblera:

UIDatePicker constraint to 162 point in height

20
MonsieurDart

Vous pouvez modifier la largeur et la hauteur en lui donnant simplement des contraintes de largeur et de hauteur. Sans cela, l'UIDatePicker a un comportement bizarre, je l'ai trouvé.

1
c1pherB1t

La définition de la propriété clipsToBounds sur YES sur mon objet UIDatePicker m'a aidée.

datePicker.clipsToBounds = YES;

Pour les XIB, vous pouvez directement cocher la case correspondant aux sous-vues de clip:

 

0
iAkki