irk*_*sor 1 ios view-bound swift
我必须查看:view_1和view_2.view_1高度与主视图控制器高度成正比,我以编程方式将view_2添加为view_1的子视图,其比例高度.
问题
当设备大小改变从iPhone 6到iPhone 5时,view_1正确调整但其高度我传递给绘制其子视图view_2的功能仍然是在界面构建器中设置的,因此它在iPhone 4移动时超出界限来自iPhone 6
因此,我想知道如何获得正确大小的视图,以便自动调整大小以适应当前设备?
在自动布局运行之前,不会建立视图的大小.您获得正确尺寸的第一个机会是viewDidLayoutSubviews:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// access view size here
}
Run Code Online (Sandbox Code Playgroud)
这是一个完整的示例,它将第二个视图添加为第一个视图的子视图.故事板中添加了红色视图; 它水平和垂直居中,高度/宽度是其超视距的50%.
黄色视图以编程方式添加.它的帧是从红色视图的帧计算为红色视图宽度的50%.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var view1: UIView!
var view2: UIView?
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if view2 == nil {
view2 = UIView()
view2?.backgroundColor = .yellowColor()
view1.addSubview(view2!)
}
let width = view1.frame.size.width
let height = view1.frame.size.height
let frame = CGRect(x: width * 0.25, y: height * 0.25, width: width * 0.5, height: height * 0.5)
view2?.frame = frame
}
}
Run Code Online (Sandbox Code Playgroud)
不会viewDidLayoutSubviews多次调用,因此view2每次调用时都必须注意不要添加.这就是代码检查是否view2已添加的原因.
| 归档时间: |
|
| 查看次数: |
4788 次 |
| 最近记录: |