CAShapeLayer (그리기, 애니 메이팅, 사용자 상호 작용) 대 : 어떻게 당신은 내가 약 textfields
, switches
등을 이야기하고 있지 않다 (모양을 그릴 할 때 UIView
및 CAShapeLayer
를 사용하여 선택할 수행을 컨트롤, 그냥 그림)?사용 UIView의 나는 아주 기본적인 질문이
(UIKit
의 일부로) UIView
은 내용을 그릴 때 보통 CALayer
을 사용합니다. 이것이 맞다면 CAShapeLayer
(또는 일반적으로 CALayer
)은 엑스트라가없는 경우와 완전히 똑같습니다. UIKit
이 제공합니다.
그런 다음 UIView
을 사용하는 것이 의미가 있으며 언제 CAShapeLayer
을 사용하는 것이 의미가 있습니까?
CAShapeLayer
이 더 빠릅니까? UIKit
은 일반적으로 제스처 인식이나 사용자 상호 작용에 더 최적화되어 있습니까?
가 당신에게 더 많은 컨텍스트를 제공하기 위해, 여기에 내가이 문제가 왔을 때 일을하려고 한 내용은 다음과 같습니다 내가이 빨간색 원은 센터 서클 주위를 회전합니다. 그러나 사용자는 회전하는 동안 빨간색 원을 탭할 수 있어야합니다.
- 가하는
UIView
만들기의 레이어의 CornerRadius를 조작하고CGAffineTransform
를 사용하여 회전 : 여기, 나는 그 빨간색 원 중 하나를 추가 (더있을 수 있습니다) 두 가지 옵션을 참조하십시오.
- 으로
CAShapeLayer
을 만듭니다. 나는 그것을 회전시킬 수 있었다CATransform3D
내가 여기있는 유일한 문제는 user interaction
이다. 끊임없이 움직이기 때문에 (회전) 올바른 프레임에 액세스해야합니다. 나는 presentation layer
을 사용하여이를 수행 할 수있다. (나는 UIView
도 사용하고있다).
UIView
또는 CAShapeLayer
을 사용할 지 잘 모르겠습니다. 또한,이 방법으로 애니메이션을 적용하는 것이이 경우 정확한 방법인지는 잘 모르겠습니다. 사용할 옵션에 대한 질문을 지울 수있는 더 나은 옵션이있을 수 있습니다.
감사합니다. 애플의 문서에서 인용
예, 읽었습니다. "(...) 이러한 이유 때문에 모든 앱에는 이러한 종류의 상호 작용 (...)을 처리 할 수있는 뷰가 하나 이상 있어야합니다." 만약 그들이 의미한다면, 레이어는 일반적으로 UIView에 임베디드되어야합니다. 그것은 내 케이스에서 (캐싱 UIView가 상호 작용을 처리 할 수 있기 때문에)'CAShapeLayers'가 가장 좋을 것입니다. 그것들이 의미하는 것이라면, 모든 레이어는 자체 뷰를 필요로합니다 (= 레이어에 의해 지원되는'UIView '를 사용합니다), 나는'UIView'를 사용해야합니다. 나는 이것에 대해 잘 모르겠습니다. 내 말은,이 모든 것을 수행하는'UIView '가 있고,'subviews' 또는'sublayers'를 사용해야하는지 모르겠습니다. – Quantm
@quantm : iOS의 모든 단일보기가 계층으로 백업됩니다. 기본적으로 뷰는 CALayer와 함께 제공되며 추가하는 레이어가 하위 레이어가 될 때 기존 CALayer를 바꿀 수 없으므로 CAShapeLayer를 사용하여 뷰 레이어에 하위 레이어로 추가 할 수 있습니다. 사용자가 서클과 상호 작용하기를 원하기 때문에보기없이 단순한 레이어를 사용할 수 없습니다. –
사용자 상호 작용이없는 간단한 애니메이션 인 경우 CALayers를 사용하여 viewController의보기에 추가하고 다양한 CoreAnimation API를 적용하여 애니메이션을 만들 수 있습니다. 모든 원에 대한 탭을 만들려면 각 원과 각보기에 대해 CAShapeLayer를 하위 레이어로 추가 한 다음 원 뷰를 하위 뷰로 ViewController 뷰에 추가 할 수 있습니다. –