J'ai un problème de compréhension ... J'ai créé deux vues similaires (même origine et même taille) et vue en coupe, Bien que j'ai créé ces vues - un dans viewDidLoad
et l'autre dans viewDidAppear
- quand je mets un point de départ similaire dans l'origine x et y de chaque vue qui se réfèrent à la section i, ces vues sont dans une position différente. Quelqu'un peut-il m'expliquer quelle est la raison pour laquelle ces opinions ne sont pas dans la même position?Swift - Affichage d'une position différente sur viewDidLoad et viewDidAppear
import UIKit
class ViewController: UIViewController {
@IBOutlet var sec: UIView!
override func viewDidLoad() {
let shape = UIView(frame: CGRect(x: sec.frame.width/2, y: sec.frame.height/2, width: 100, height: 100));
shape.backgroundColor = UIColor.redColor();
view.addSubview(shape);
}
override func viewDidAppear(animated: Bool) {
let shape2 = UIView(frame: CGRect(x: sec.frame.width/2, y: sec.frame.height/2, width: 100, height: 100));
shape2.backgroundColor = UIColor.greenColor();
view.addSubview(shape2);
}
}
@ r.pul il n'y a pas d'erreurs de compilation devrait être, c'est à peu près comment tout cela fonctionne. Autolayout est une nouvelle fonctionnalité (seulement depuis iOS 6 ou 7). Ainsi, avant l'introduction du moteur de mise en page automatique, tous les systèmes de coordonnées étaient clairs et droits, comme vous l'attendiez dans votre question. Vous ne gériez toutes les coordonnées que par les propriétés du cadre (en configurant parfois des masques autorésisants). Le temps passe, et de nouveaux appareils avec une nouvelle résolution d'écran présentée, il était donc de plus en plus difficile de gérer (redimensionner) toutes les images à la main. C'est pourquoi Apple a introduit le moteur autolayout, basé, bien sûr, sur le système de cadre existant –
Merci beaucoup pour votre commentaire rapide et utile, je supposais que c'est le problème ... encore c'est un peu étrange pour moi ... Pourquoi le le compilateur ne montre aucune erreur? Qu'est-il arrivé derrière la scène .. est-ce qu'il devine à propos de la taille de ces cadres de vues utilisés autolayout que je leur renvoie sur viewDidLoad? –
merci encore !! maintenant il est plus clair pour moi –