在我的每个xib中,它都问我要使用什么默认设备。我选择iPhone 6并将帧更新为建议的帧。现在,在viewWill或viewDidLayoutSubviews中受影响的任何视图都搞砸了。它们都有CGRect(0, 0, 1000, 1000)
的框架。
这是我的代码:
self.headImage.layer.cornerRadius = ceilf(CGRectGetWidth(self.headImage.frame)/2);
self.headImage.layer.masksToBounds = YES;
想知道这是什么以及是否有解决方案。感谢
答案 0 :(得分:10)
我通过致电
解决了我的问题myOwnView.layoutIfNeeded()
获取myOwnView.frame
答案 1 :(得分:0)
当我从推送的ViewController
返回并且在ViewDidLayoutSubviews
的帧中不正确时,此问题发生在我身上。
我的视图的width constraint
设置为与父视图的宽度成比例,并且没有恒定的偏移量。我用offset constraints
代替了比例约束,现在可以正确计算帧了。
此问题发生在XCode 10,iOS 12,iPhone 6 Plus上。
答案 2 :(得分:0)
如果甚至viewDidLayoutSubviews给了您错误的帧-在layoutSubviews上调用 layoutIfNeeded 也可以解决问题!
override func layoutSubviews() {
super.layoutSubviews()
yourView.layoutIfNeeded()
setGradientForYourView()
}