我有一个带有UICollectionReusableView(标头)的UICollectionViewController。 在这个UICollectionReusableView中,我有一个子视图(粉红色)。
我已经设置了一些约束来提供子视图,全屏宽度。
它完美适用于背景img(黑色)。但是,关于子视图,它只适用于iPhone 6尺寸(对于iPhone 5来说它太大了,而对于iPhone 6 plus来说还不够)。我真的不知道为什么它为背景图像而不是为这个子视图工作。粉红色的子视图是" Radius View on Top"并且背景中的图像是" Ban img"。
我试图在UICollectionReusableView的awakeFromNib()
中对此进行编码let width = UIScreen.main.bounds.size.width
self.widthConstraintRadiusView.constant = width
我找到了一些东西:
我可以看到子视图的宽度正确,但它没有拉伸?这怎么可能?我有什么需要了解的?
如果我在子视图中使用roundCorners函数,它将无效:
func roundCorners(_ corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
radiusViewOnTop.roundCorners([.topLeft,.topRight], radius: 7)
我如何保持功能并具有正确的宽度?
答案 0 :(得分:1)
使用您的最新编辑,我知道它为什么不起作用,这是一个简单的修复。
您的视图尺寸正确,但您添加的蒙版尺寸错误。
您使用iPhone 6尺寸设计了界面,这些是视图加载的尺寸。之后,它会对您的视图执行布局传递,以将大小更新为实际大小。
但是,您可能正在调用awakeFromNib
上的圆角方法或类似的方法,这种方法在加载视图之后但在更新大小之前发生。
修复很简单,覆盖layoutSubviews
,先调用super
,然后调用roundCorners:
方法。