我有一个使用自动版式配置的UIImageView
对象。我创建了约束,以便 View 与其父 View 保持恒定的距离。在视觉格式下,它将像:
@"V:|-[imageView]-|"
@"H:|-[imageView]-|"
但我也想保持基础图像的长宽比,因此我已将
UIViewContentModeScaleAspectFit
分配给contentMode
。我以为一切工作都很好,直到我设置了相关
cornerRadius
的CALayer
值:self.imageView.layer.cornerRadius = 7;
self.imageView.layer.maskToBounds = YES;
现在,当调整 ImageView 的大小时,例如由于方向改变,圆角会丢失,具体取决于 View 获得的新大小。原因是
cornerRadius
适用于UIImageView
(下面的破折号),但是由于基础图像也已调整大小以尊重contentMode
(下面的星号的框),因此不再显示圆角:--------------------------
| ********** |
| * * |
| * * |
| * * |
| ********** |
--------------------------
有没有办法防止这种行为?
最佳答案
就像@ jacob-k所说的那样,您应该将其子类layoutSubviews
添加到您的单元格中,但是要添加,您应该首先调用layoutIfNeeded
。
例子:
- (void)layoutSubviews
{
[super layoutSubviews];
[self layoutIfNeeded];
imageView.layer.cornerRadius = imageView.frame.size.width / 2;
}
如果您不首先调用
layoutIfNeeded
,那么它将应用所有更改而没有您设置的约束。关于ios - 如何将自动布局约束与UIView的contentMode属性结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18946621/