swift – 在其子类中获取自定义UIView的框架大小的位置
当我通过使用故事板添加我的自定义UIView时,UIView的正确框架大小是否在计算?
在UIView的init(框架:CGRect)或init(coder aDecoder:NSCoder)或awakeFromNib()中,我无法获得正确的帧大小.我在覆盖func layoutSubviews()中获得正确的大小,但这次视图没有添加到视图控制器的视图. 编辑: 有两个垂直约束(拖尾和前导空间到超级视图),调整我的自定义视图的宽度.但是在上述方法中宽度为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单元格 func applyLayoutAttributes(_ layoutAttributes: UICollectionViewLayoutAttributes!) 其中一个默认的layoutAttributes是frame属性.请参阅下面的我的评论如何直接从collectionView.layout提取框架. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |