J'ai une UIView avec environ 50 boutons UIB. Toutes les positions des boutons ont été données en pixels, par rapport au coin supérieur gauche de mon UIView principal.
Toutes les images (d'arrière-plan) utilisées dans la vue sont disponibles en résolution supérieure. Comme je porte mon application de l'iPhone vers l'iPad, je voudrais augmenter la taille effective des pixels de l'UIView.
Maintenant, je cherche un moyen de mettre à l'échelle l'ensemble de UIView par un facteur 2 *. Est-ce possible sans détruire la position des éléments intérieurs?
Pour info, l'UIView est conçu dans un fichier NIB en XCode. Mais cela ne me dérange pas si cela peut être fait par programme.
J'ai fini par utiliser
self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);
Cela m'a permis de conserver le design créé dans Interface Builder.
Malheureusement, la netteté de l'image en souffre dans ce cas, mais c'est un petit prix à payer par rapport au scriptage de la conception entière par programmation.
Mise à jour pour Swift 3.0
self.view.transform = CGAffineTransform(scaleX: 2.0, y: 2.0)
Pour Swift 4.0, zoom 2x:
myView.transform = CGAffineTransform.identity.scaledBy(x: 2, y: 2)
Vous pouvez d'abord créer par programmation ces boutons comme par exemple créer ces boutons à l'aide de la méthode CGRectMake
et en indiquant la largeur et la hauteur à X et Y et multiplier par 2 si l'ipad est détecté comme pour Origin, il devrait changer respectivement aussi, pourrait provoquer un chevauchement s'il est trop proche les uns des autres
Edit: Tout dépend de votre logique, je ne sais pas trop