반응형
UIView의 Layer 프로퍼티는 CALayer(Core Animation 프레임워크에서 제공하는 객체) 타입 객체이며 뷰의 그래픽 처리 및 애니메이션 처리를 합니다.
Layer 속성은 항상 CALayer 또는 CALayer 서브 클래스 객체를 반환하기 때문에 nil이 될 수 없습니다.
이때 객체의 실제 클래스는 UIView의 layerClass 클래스 메서드에서 반환되는 값에 따라 결정이 됩니다.
그리고 UIView가 Layer의 delegate 역할을 합니다.
UIView는 레이아웃 및 터치 이벤트와 같은 여러 작업들을 수행하지만 직접적으로 화면을 그리거나 애니메이션을 제어하지는 않습니다.
UIView는 CALayer 위에 있는 wrapper라고 보면 됩니다.
각각의 UIView에는 하나의 루트 CALayer가 있고, 여러 개의 서브 레이어를 포함할 수 있습니다.
이 레이어의 속성으로 View의 그래픽과 애니메이션 처리를 향상할 수 있습니다.
//1
layer.frame = viewForLayer.bounds
layer.contents = UIImage(named: "star")?.cgImage
// 2
layer.contentsGravity = .center
layer.magnificationFilter = .linear
// 3
layer.cornerRadius = 100.0
layer.borderWidth = 12.0
layer.borderColor = UIColor.white.cgColor
layer.backgroundColor = swiftOrangeColor.cgColor
//4
layer.shadowOpacity = 0.75
layer.shadowOffset = CGSize(width: 0, height: 3)
layer.shadowRadius = 3.0
layer.isGeometryFlipped = false
layer의 활용 예시 코드입니다.
- 주석 1번
레이어의 프레임을 해당 뷰의 경계에 맞추고 이미지를 배경으로 설정 - 주석 2번
레이어의 contentsGravity 속성에 .center 값을 줘서 내용물이 프레임 가운데에 위치하도록 설정하고,
magnificationFilter 속성은 이미지를 확대하거나 축소할 때 적용되는 필터로 .linear 값을 줘서 선형 보간법으로 확대 혹은 축소합니다. - 주석 3번
레이어의 외형을 설정하는 코드들인데
cornerRadius는 레이어의 모서리를 둥글게 만드는 설정으로 100.0 값을 주면 모서리의 반지름이 100포인트가 됩니다.
borderWidth와 borderColor는 레이어의 테두리를 설정합니다. 테두리 두께는 12포인트, 테두리 색은 흰 색으로 설정했습니다.
backgroundColor는 레이어의 배경색을 설정하는 코드입니다. - 주석 4번
shadowOpacity는 레이어의 그림자 투명도를 설정합니다.
shadowOffset은 레이어의 그림자 위치를 설정하는데 CGSize 타입으로 가로와 세로 위치를 지정할 수 있습니다.
shadowRadius는 레이어의 그림자 반경을 설정합니다.
isGeometryFlipped는 레이어의 좌표계를 뒤집을 것인지의 여부를 설정합니다.
이 외에도 다양한 속성들을 활용해서 레이어를 변형시킬 수 있습니다.
출처
https://developer.apple.com/documentation/uikit/uiview/1622436-layer
https://www.kodeco.com/10317653-calayer-tutorial-for-ios-getting-started
반응형
'DEV - iOS > Background' 카테고리의 다른 글
[iOS Interview Questions] ARC란 무엇인지 설명하시오. (0) | 2023.05.26 |
---|---|
[iOS Interview Questions] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가? (0) | 2023.05.09 |
[iOS Interview Questions] Result 타입에 대해 설명하시오. (0) | 2023.03.31 |
[iOS Interview Questions] KVO 동작 방식에 대해 설명하시오. (1) | 2023.03.24 |
[iOS Interview Questions] Codable에 대하여 설명하시오. (0) | 2023.03.23 |