2017-10-01 3 views
4

J'ai remarqué quelque chose de très étrange avec Xcode 9. Lorsque je suis sur mon storyboard principal et que je change l'appareil sélectionné pour voir les contrôleurs de vue dans le format approprié, J'ai remarqué que la largeur de ma tableview sur viewDidLoad est incorrecte si le périphérique sélectionné sur le storyboard est différent de celui sur lequel je suis déployé. J'ai fait des tests et il semble que la disposition de l'appareil sélectionné sur le storyboard soit prise.Xcode 9 & 9.1 périphérique sélectionné sur le storyboard affectent la largeur de vue sur le périphérique de déploiement

Est-ce que quelqu'un a déjà rencontré ce problème?

Ce problème est également présent sur la version bêta 9.1 de Xcode

+0

J'ai exactement le même problème, Apple a rejeté mon application à cause de cela – ColdGrub1384

+0

Avez-vous obtenu une réponse à votre question? –

+0

Je rencontre le même problème. Je dois changer la taille du storyboard chaque fois que j'ai besoin d'une taille d'écran différente avant chaque déploiement. – nullforlife

Répondre

0

J'ai remarqué le même problème en essayant d'appliquer un masque à la couche de mon point de vue afin d'arrondir les coins dans un UITableViewCell. This answer a fait l'affaire pour moi.

Dans layoutSubviews(), appelez layoutIfNeeded() sur toutes les vues pour lesquelles vous avez besoin de la taille réelle lors de l'exécution. Pour mon utilisation, il ressemble à ceci:

override func layoutSubviews() { 
    super.layoutSubviews() 

    print("cardView frame: \(cardView.frame)") // Storyboard size 
    cardView.layoutIfNeeded() 
    print("cardView frame: \(cardView.frame)") // Runtime device size 
    // Perform your layout here. 
} 

J'espère que cela aide!

+0

Merci pour votre réponse JGHof mais cela ne fonctionne pas pour moi. Actuellement, je n'ai aucune solution pour ce problème. –