У меня есть объект UIImageView
, настроенный с помощью Auto Layout. Я создал ограничения, чтобы представление сохраняло постоянное расстояние до его супервизора. В визуальном формате это будет выглядеть так:
@"V:|-[imageView]-|"
@"H:|-[imageView]-|"
Но я также хотел бы сохранить соотношение сторон основного изображения, поэтому я назначил UIViewContentModeScaleAspectFit
на contentMode
.
Я думал, что все работает хорошо, пока я не установил значение cornerRadius
связанного CALayer
:
self.imageView.layer.cornerRadius = 7;
self.imageView.layer.maskToBounds = YES;
Теперь, когда размер изображения изменяется, например, из-за изменения ориентации, округленные углы теряются в зависимости от нового размера, который получает вид. Причина в том, что cornerRadius
применяется к UIImageView
(кадр в тире ниже), но так как базовое изображение также изменяется в соответствии с contentMode
(рамка в звездочках ниже), закругленные углы больше не видны:
--------------------------
| ********** |
| * * |
| * * |
| * * |
| ********** |
--------------------------
Есть ли способ предотвратить это поведение?