0

Я реализовал представление стека, пропорциональное образам и меткам, а также текст и кнопки внутри popover поверх моего основного контроллера представления. Когда я перейду к popover, я использую представление, которое будет отображаться переопределить, чтобы определить радиус угла изображения, который я называю ProfileImage равным 1/2 его высоте, чтобы он отображался как круг.Как использовать атрибуты subviews в StackView для параметра Fill пропорционально, когда он пересчитывается после вращения устройства

I Когда я поворачиваю устройство, стек пересчитывает и изменяет размер profileImage. Я попытался использовать приведенный ниже код, чтобы отрегулировать радиус угла так, чтобы он был кругом при переходе вида. Я пробовал этот код как в блоке завершения, так и в блоке «Транслирование».

Когда я поворачиваю устройство, радиус угла устанавливается по размеру изображения в ориентации OLD, а не в новой ориентации. Кажется, что переход к новой ориентации происходит, и ТОГДА стек пересчитывает себя. Радиус угла, кажется, обновляется до этого. Я хотел бы помочь понять, как вызвать свойство height изображения, которое будет высотой в новом представлении после поворота устройства, и стек пересчитывает размер изображения на основе этой новой ориентации.

Благодарим за любые рекомендации, которые вы можете предоставить. Пожалуйста, смотрите ниже код в вопросе:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    coordinator.animate(alongsideTransition: { context in 
     context.viewController(forKey: UITransitionContextViewControllerKey.from) 
    }, completion: {(context) -> Void in 
     self.view.layoutSubviews() 
     self.ProfileImage.layer.cornerRadius = self.ProfileImage.bounds.size.height/2 
     print(self.ProfileImage.frame.size.height) 
    }) 
} 

ответ

0

ответ, что это близко, но не идеально, чтобы установить радиус угла в viewWillLayoutSubviews() вместо того, чтобы в viewWillTransition(), потому что вид UIStack раскладывает его подвидов после вращения не во время его.

override func viewWillLayoutSubviews() { 
    self.ProfileImage.layer.cornerRadius = self.ProfileImage.frame.size.height/2 
} 

спасибо респондентов на эту статью указал мне в правильном направлении: View frame changes between viewWillAppear: and viewDidAppear:


Моя проблема теперь что-то размер зрения UIImage изменилось несколько пикселей после вызова viewDidLayoutSubviews. Есть ли еще одна функция, которая будет вызываться, когда просмотр стека или автозапуск рекулирует после DidLayoutSubviews?

Приложение выглядит хорошо, но есть и другое поведение, которое я не понимаю.

Смежные вопросы