r.p*_*pul 1 viewdidload viewdidappear ios swift
我有一个理解问题...我创建了两个相似的视图(相同的原点和相同的大小)和剖面视图,而我创建了这些视图 - 一个在viewDidLoad另一个中viewDidAppear- 当我在原点x和y中放置相似的起点引用第i部分的每个视图都将这些视图放在不同的位置.有人可以解释一下这些观点不在同一个位置的原因是什么?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
原因是因为viewDidAppear在autolayout引擎完成它之后调用的方法,viewDidLoad- 之前.在自动布局完成之前,在大多数情况下,屏幕上任何视图的帧都不正确.viewDidLayoutSubviews当自动布局完成且帧正确时,您可以将方法用作最近点.请注意,此方法可以多次调用.
UPD.
默认情况下,autolayout用于viewin UIViewController,以及故事板中的视图; 您在代码中添加了自定义视图,这些视图不使用autolayout.您应该仔细混合自动布局和帧初始化视图.
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |