본문 바로가기
프로그래밍/Swift

Swift extension CALayer, UIView border

by Mr-후 2018. 5. 4.
반응형


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작업에는 아주 유용한 함수라 할 수 있겠다. 



반응형