Swift extension CALayer, UIView border
어제 작업을 하다보니 UIView, UILabel, UIButton, 등 UIView를 상속 받은 컨트롤들의 UI작업을 하다 보면 다양하게 밑줄, 옆줄, 윗줄 등을 넣어야하는 경우가 있다. 매번 이미지파일로 대체하기 어려워 Objective-C로 카테고리로 빼서 사용하던 부분을 구글 검색을 해보니 다양한 리소스가 있어 public extension으로 뽑아서 프로젝트에서 사용할 수 있도록 구성했다. 아주 만족스럽다.
import Foundation
import UIKit
public extension CALayer {
func addBorder(_ arr_edge: [UIRectEdge], color: UIColor, width: CGFloat) {
for edge in arr_edge {
let border = CALayer()
switch edge {
case UIRectEdge.top:
border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: width)
break
case UIRectEdge.bottom:
border.frame = CGRect.init(x: 0, y: frame.height - width, width: frame.width, height: width)
break
case UIRectEdge.left:
border.frame = CGRect.init(x: 0, y: 0, width: width, height: frame.height)
break
case UIRectEdge.right:
border.frame = CGRect.init(x: frame.width - width, y: 0, width: width, height: frame.height)
break
default:
break
}
border.backgroundColor = color.cgColor;
self.addSublayer(border)
}
}
}
원본 소스 출처 : http://devsc.tistory.com/62
사용예시는 다음과 같다.
lblName.layer.addBorder([.bottom], color: UIColor(0x9f9f9f), width: 1.0)
웹스러운 UI작업에는 아주 유용한 함수라 할 수 있겠다.
'프로그래밍 > Swift' 카테고리의 다른 글
2. 함수형 프로그래밍의 특징. (0) | 2019.02.13 |
---|---|
Swift Singletone 패턴 학습 (0) | 2018.05.09 |
스위프트의 튜플(Tuple)이란? (0) | 2018.03.14 |
스위프트 익스텐션을 이용한 Touch ID구현(지문인식) (0) | 2018.03.12 |
스위프트 네트워크 통신 예(POST / GET) (0) | 2018.03.12 |