Gre*_*ory 5 constraints ios swift
我在屏幕中心有一个圆圈,50
两端都有边距限制.因此,圆的宽度取决于屏幕尺寸.
所以,我试过的是这个:
方法1
我在故事板中设置边距以定义圆宽(50
左右)
然后我使用了以下代码:
@IBOutlet weak var helpButHeight: NSLayoutConstraint!
@IBOutlet weak var helpBut: UIButton!
Run Code Online (Sandbox Code Playgroud)
viewDidLoad中:
helpButHeight.constant = helpBut.frame.size.width
Run Code Online (Sandbox Code Playgroud)
这没用.
由于屏幕宽度是400
,并且边距是50
两端,所以helpBut.frame.size.width
应该给我300
.
相反,它给了我46
.
方法2
这是我的解决方法:
viewDidLoad中:
let screenSize: CGRect = UIScreen.mainScreen().bounds
helpButHeight.constant = screenSize.width - 100
Run Code Online (Sandbox Code Playgroud)
因为100 = 50 + 50
,两个边缘.
工作良好 !
题
我为什么要这样做?为什么第一种方法不起作用?为什么46
不300
呢?
Rei*_*ica 17
原因是在viewDidLoad
函数中没有引入约束.生命周期看起来像
viewDidLoad
- 约束没有设定viewWillAppear
- 约束没有设定viewWillLayoutSubviews
- 限制正在设定viewDidLayoutSubviews
- 设置约束viewDidAppear
- 设置约束