2011-01-16 4 views
3

0은 Mac의 하단이고 iOS의 상단은이기 때문에 y 좌표가 귀찮습니다. 그러나 나는 모든 것을 뒤엎고 싶지 않습니다. . . 예를 들어 이미지는 두 플랫폼 모두에서 같은 방식입니다.Mac 및 iOS 용 CALayer 서브 클래스 작성에 관한 요령?

두 플랫폼 모두에서 모든 것을 작동시키는 가장 효율적인 방법은 무엇입니까?

답변

4

내가 접근 한 방식과 Core Plot framework에서 사용되는 방식은 내 레이어 좌표를 모두 Quartz 좌표계 (원점은 왼쪽 하단)에 배치하는 것입니다. iOS에서는 호스팅 된 레이어의 좌표계를 반전하지 않는 맞춤 레이어 호스팅보기를 만듭니다. CALayers는 여전히 iOS에서 동일한 좌표계를 가지고 있습니다. UIView의 좌표계가 뒤집힌 것은 CALayers에 불과합니다.

내가이 (가)있는 UIView의 초기화에 다음과 같은 코드를 사용하여이 작업을 수행하려면

self.layer.sublayerTransform = CATransform3DMakeScale(1.0, -1.0, 1.0); 

다음 나는 그 UIView의의 보조 층의 계층으로 하나 개의 주 호스팅 레이어를 만들을, 그리고 모두 추가 내 맞춤 레이어를 해당 호스팅 레이어에 추가합니다.

코어 플롯 프레임 워크의 코드를 살펴보면이 코드가 거의 동일한 두 플랫폼에서 레이어 기반 드로잉을 처리하기 때문에 실제 작동 방식을 확인할 수 있습니다.

Quartz 좌표 공간을 설명하기 위해 뒤집을 필요가있는 NSString 드로잉 메서드와 같이 iOS에서 조심해야하는 몇 가지 조건이 있습니다.