기본 뷰 컨트롤러 위에 팝업의 내부에 이미지, 레이블, 텍스트 및 단추가 비례 적으로 채워진 스택보기를 구현했습니다. 내가 popover에 segue 할 때 뷰는 ProfileImage를 높이의 1/2로 지정하여 이미지가 원으로 나타나도록 이미지의 코너 반경을 정의하는 오버라이드로 나타납니다.StackView 내의 하위 뷰 속성을 장치 회전 후 다시 계산할 때 비례 적으로 채우기로 설정하는 방법
I 장치를 회전하면 스택이 다시 계산되어 profileImage의 크기가 변경됩니다. 뷰를 전환 할 때 원이되도록 코너 반경을 조정하려면 아래 코드를 사용하려고했습니다. 이 코드는 완료 블록과 alongsideTransition 블록에서 모두 시도했습니다.
장치를 회전 할 때 코너 반경은 NEW 방향이 아닌 OLD 방향의 이미지 크기로 설정됩니다. 마치 새로운 방향으로의 전환이 일어나는 것처럼 느껴지고 스택이 스스로 재 계산되는 것처럼 느껴집니다. 이 경우 코너 반경이 업데이트되기 전에 나타납니다. 장치가 회전하고 스택이 새로운 방향을 기반으로 이미지 크기를 다시 계산 한 후 새 뷰의 높이가 될 이미지 높이 속성을 호출하는 방법을 이해하는 데 도움을 드리고자합니다.
제공 할 수있는 지침을 제공해 주셔서 감사합니다. 문제의 코드는 아래를 참조하십시오
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)
})
}