Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升级到Xcode 8后,ViewDidLayoutSubView中的UIView帧错误_Xcode_Frame_Xib - Fatal编程技术网

升级到Xcode 8后,ViewDidLayoutSubView中的UIView帧错误

升级到Xcode 8后,ViewDidLayoutSubView中的UIView帧错误,xcode,frame,xib,Xcode,Frame,Xib,在我的每个XIB中,它都会询问我要使用什么默认设备。我选择了iPhone6,并根据建议更新了相框。现在,viewWill或viewDidLayoutSubviews中受影响的任何视图都会出错。它们都有CGRect(0,0,1000,1000)的帧 这是我的密码: self.headImage.layer.cornerRadius = ceilf(CGRectGetWidth(self.headImage.frame)/2); self.headImage.layer.masksToBounds

在我的每个XIB中,它都会询问我要使用什么默认设备。我选择了iPhone6,并根据建议更新了相框。现在,viewWill或viewDidLayoutSubviews中受影响的任何视图都会出错。它们都有
CGRect(0,0,1000,1000)
的帧

这是我的密码:

self.headImage.layer.cornerRadius = ceilf(CGRectGetWidth(self.headImage.frame)/2);
self.headImage.layer.masksToBounds = YES;

想知道这是怎么回事,是否有解决办法。谢谢

我打电话解决了我的问题

myOwnView.layoutIfNeeded() 

在获取
myOwnView.frame
之前,当我从按下的
ViewController
返回时,这个问题发生在我身上,
viewdilayoutsubviews
中的frame不正确

我的视图的
宽度约束
设置为与父视图的宽度成比例,并且没有恒定偏移。我用偏移约束替换了这个比例约束,现在帧计算正确了


这个问题出现在XCode 10、iOS 12和iPhone 6 Plus上

如果即使是viewDidLayoutSubviews也给出了错误的帧,那么在layoutSubviews上调用LayoutFneeded就可以做到这一点

override func layoutSubviews() {
    super.layoutSubviews()

    yourView.layoutIfNeeded()
    setGradientForYourView()

}

您能显示您的代码吗?self.headImage.layer.cornerRadius=ceilf(CGRectGetWidth(self.headImage.frame)/2);self.headImage.layer.masksToBounds=是;//但框架是错误的;它显示在xib中的CGRect(0,0,1000,1000),其高度和宽度分别为62和62;在xcode 8更新之后,我遇到了完全相同的问题。viewDidLayoutSubviews上的第二个触发器提供了正确的帧。Xcode 8.0I也面临同样的问题。在获取MyowView帧之前,我通过调用MyowView.LayoutFneedd()解决了我的问题。这是可行的,但我不确定为什么需要这样做。我假设布局过程是在didLayoutSubviews回调之前完成的。这对我也适用,但我认为viewDidLayoutSubviews()的整个观点是,视图已经布局好了?似乎基于约束的视图仍在调用
didLayoutSubviews()
进行布局的过程中。有关更多信息,请参阅。帮助我根据更新的UIScrollView框架设置UIScrollView的内容大小。谢谢