У меня есть метод, который создает слой маски на основе текущего фрейма моего UIImageView
, который работает так, как я ожидал. Однако в одном случае я изменяю ограничение высоты UIImageView
в методе viewWillAppear
, а затем применяю создатель маски к UIImageView
, который создает маску с размером worng. Так что мой вопрос: как я могу заставить получить измененный правильный фрейм этого UIImageView
?Получение правильного кадра после установки ограничения
Сейчас я получаю высоту 140 InstEd 105, но если я использую layoutIfNeeded
после установки ограничения он стал 118, который ближе, но до сих пор не 105.
Обновлено:
метод, который я использую для создания маски:
public func setupMaskForImageView() {
let mask = CALayer()
let resizedMaskImage = resizeImage(UIImage(named: imageMaskName)!, newSize: frame.size)
mask.contents = resizedMaskImage
mask.frame = CGRectMake(0, 0, frame.size.width, frame.size.height)
layer.mask = mask
layer.masksToBounds = true
}
и я изменил ограничение в viewWillAppear
с
imageHeight.constant = UIScreen.mainScreen().bounds.width/2.5
Я стараюсь сохранить большинство своих кадров в макете. Вы пробовали установить рамку там, чтобы она обновлялась всякий раз, когда виды нуждаются в перерисовке? – joels
@joels Представление, которое я пытаюсь установить, это не подкласс UIView, поэтому установка в layoutSubviews недоступна к сожалению. –
Как вы добавляете маску и как вы обновляете ее ограничение. – sahara108