2012-10-21 4 views
0

view와 view.layer의 관계는 무엇입니까? 예를 들어 view.layer는 position 속성을가집니다. 보기에는 속성 센터가 있습니다. 레이어의 위치를 ​​변경하면 변경 센터 속성을 볼 수 있습니까? view.layer의 경계를 변경하면 경계 속성도 변경됩니까?view와 view.layer의 관계는 무엇입니까?

답변

2

보기는 레이어로 백업됩니다. stackmonster가 말했듯이, 레이어는 시스템이 내용의 사각형 영역을 화면에 렌더링하는 데 사용하는 하위 레벨 그리기 컨텍스트를 설명합니다.

stackmonster가 직접 레이어를 조작하지 않고 애니메이션 성능이 좋지 않다고 말한 다른 것들은 잘못된 것입니다. Core Animation은 레이어를 기반으로합니다. 많은 간단한 애니메이션의 경우 UIView 애니메이션을 사용할 수 있지만 애니메이션 클래스와 레이어를 직접 만들고 사용해야하는 다른 모든 클래스가 있습니다. 모든 CAAnimation 객체는 레이어에서 작동하며 레이어를 직접 조작하여 수행 할 수있는 많은 멋진 트릭이 있습니다. 저는 도면과 애니메이션을 위해 항상 레이어를 사용합니다.

레이어와 뷰는 약간 다른 속성을 사용하여 화면에서의 위치를 ​​제어합니다. 말하자면 뷰에는 중심 속성이 있고 레이어에는 위치 속성이 있습니다. 그들은 유사합니다.

0

레이어는 잠재적으로 여러 클리핑 영역을 공유하지만 성능상의 이유로 드로잉 작업을 잠재적으로 집계하는 그래픽 컨텍스트를 나타내며, 때로는 알파 (투명도) 값이 충돌하는보기 또는 애니메이션 효과가 겹쳐서 제한됩니다.

일반적으로 수동으로 레이어를 조작하지는 않지만 API 호출에서 참조 할 수 있으므로 기본 프레임 워크가이 모든 것을 사용자를 위해 정렬하고 정렬 할 수 있습니다. 그렇지 않으면 iOS에서 꽤 끔찍한 애니메이션 성능을 보게됩니다.

매우 낮은 수준의 그래픽 코딩을하고있는 경우가 아니라면 왜 레이어 경계를 직접 조작하는지 알 수 없습니다.

+0

객관적인 C가 실제 메소드에서 private 메소드를 지원하지 않기 때문에 API는 실제로 서브 클래스 화만을위한 public 메소드를 보여줄 것입니다. –

관련 문제