我有一个配置了自动布局的UI
ImageView对象.我创建了约束,使视图与其超级视图保持不变的距离.在视觉格式下,就像:
@"V:|-[imageView]-|" @"H:|-[imageView]-|"
但是我也想保留底层图像的宽高比,所以我已经将UIViewContentModeScaleAspectFit分配给contentMode.
我认为一切都很好,直到我设置了相关CALayer的cornerRadius值:
self.imageView.layer.cornerRadius = 7; self.imageView.layer.maskToBounds = YES;
现在当图像视图被调整大小时,例如由于方向改变,取决于视图获取的新尺寸,圆角会丢失.原因是cornerRadius适用于UIImageView(下面的破折号框),但是由于底层映像也被调整大小以符合contentMode(下面的星号中的框架),所以圆角不再可见:
-------------------------- | ********** | | * * | | * * | | * * | | ********** | --------------------------
有办法防止这种行为吗?
解决方法
喜欢@ jacob-k表示,你应该添加到你的单元格子类layoutSubviews中,只是为了添加你应该首先调用layoutIfNeeded.
例:
- (void)layoutSubviews { [super layoutSubviews]; [self layoutIfNeeded]; imageView.layer.cornerRadius = imageView.frame.size.width / 2; }
如果您不会首先调用layoutIfNeeded,那么它将应用所有更改,而无需设置限制.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。