在UIVIEw的init(框架:CGRect)或init(coder aDecoder:NSCoder)或awakeFromNib()中,我无法获得正确的帧大小.我在覆盖func layoutSubvIEws()中获得正确的大小,但这次视图没有添加到视图控制器的视图.
编辑:
我想在UIVIEw子类中这样做,因为我添加一个CAGradIEntLayer层(与我的视图具有相同的大小)到我的自定义UIVIEw.在UIVIEwControllers vIEwDIDLayoutSubvIEws方法中设置视图必须有更好的方法.
有两个垂直约束(拖尾和前导空间到超级视图),调整我的自定义视图的宽度.但是在上述方法中宽度为600,而不是屏幕宽度.
func vIEwWillAppear(_ animated: Bool)
在视图层次结构就位并且几何体被设置之后,这在视图控制器上被调用.
通常是安排几何相关的vIEwController代码的最佳位置,并且在运行转换动画之前调用它.
之后是调用vIEwDIDAppear,这在转换动画完成后被调用.
更新
因为你想直接在自定义视图中设置(而不是在vIEwController中),要覆盖的适当的UIVIEw函数是layoutSubvIEws.请确保在覆盖中调用super.layoutSubvIEws().
overrIDe func layoutSubvIEws() { super.layoutSubvIEws() //self.frame will be correct here}
这将在vIEwController的vIEwWillAppear和vIEwDIDAppear之后调用
更新2:collectionVIEw单元格
集合视图单元格从集合视图的布局获取其框架数据.当一个单元格需要知道它是几何时,你可以覆盖applyLayoutAttributes
func applyLayoutAttributes(_ layoutAttributes: UICollectionVIEwLayoutAttributes!)
其中一个默认的layoutAttributes是frame属性.请参阅下面的我的评论如何直接从collectionVIEw.layout提取框架.
总结以上是内存溢出为你收集整理的swift – 在其子类中获取自定义UIView的框架大小的位置全部内容,希望文章能够帮你解决swift – 在其子类中获取自定义UIView的框架大小的位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)