2017-12-20 19 views
0

뷰의 레이어에 직접 원을 그렸습니다. 장치 회전이 완벽하게 보입니다.장치 회전 중에 CALayer 하위 레이어가 정상적으로 작동하지 않음

드로잉은 func draw(_ rect: CGRect) 메서드에서 발생합니다.

그런 다음 하위 레이어에서 원을 그린 다음 init 메서드의보기에 추가했습니다.

func draw(_ rect: CGRect) 메서드에서 하위 레이어의 프레임을 업데이트합니다.

기기 회전이 완료되기 전에 하위 레이어가 업데이트되고있는 것처럼 보입니다. 그러므로 아래 첫 번째 이미지.

이 모양을 조금 더 개선하려면 빠른 수정으로 하위보기 레이어를 클립해야합니다. 이렇게하면 원이 주 뷰 (주황색 뷰)로 유출되지 않습니다.

주요 문제는 해결되지 않았지만 하위 레이어를 추가하는 것이 왜이 문제를 일으키는 지 알 수 없습니다.

또한 하위보기의 그리기 방법에서 하위 레이어의 내용을 그립니다. 오렌지보기, 슈퍼 뷰가 회전하는 동안

During rotation

enter image description here

주 중간

의 사각형 슈퍼 뷰입니다되지 않은 : 나는 모든 때문에 예제 코드를 추가하지 않은 내가 본 예들도 똑같은 문제가 있습니다. 다른 방법은 뷰의 크기를 하드 코딩하여 문제를 해결하므로 회전으로 인해 뷰의 크기가 조정되지 않고 회전으로 인해 크기가 조정되지 않습니다. 또한보기를 세로 모드로 고정하는 경향이 있습니다.

비록 예제 코드가 필요하다면 간단한 예제를 만들 수 있습니다.

+0

layoutSubview 메서드에서 레이어 그리기를 시도 했습니까? – Ocunidee

+0

간단한 예제를 제공 할 수 있습니까? @ 3366784 –

+0

예제 코드가있는 훌륭한 기사를 찾았습니다. 제 대답을 살펴보십시오. – 3366784

답변

0

문제의 해결책을 찾았습니다.

다른 모든 사람들이 똑같은 문제를 겪고있는 것처럼 보입니다. 레이어에는 제약이 없기 때문입니다.

앱은 일반적으로 세로 모드로 잠겨 있기 때문에 프로덕션 앱에서는 이러한 문제가 표시되지 않습니다. 사과처럼 이미지를 사용하여 그림을 그리는 경향이있는 것 같습니다. 이것은 내가 읽은 Ray Wenderlich article에 따른 것입니다.


용액 (부층의 대신)을 사용하여 파단 그릴 부 뷰에 내장 된 층을 사용하는 것이 기본적이다. 여기 https://marcosantadev.com/calayer-auto-layout-swift/

를 하위 뷰 및 서브 층과 회전을 나타내는 이미지이다

이 문서 처리를 설명한다. 제약 조건이 있기 때문에 하위보기가 정상적으로 회전합니다. enter image description here