Để tạo viền toàn bộ cho chữ hay nút, ta có thể dùng lệnh
la.layer.borderWidth=1
Nhưng
nếu chỉ muốn viền một phía nào đó thì hãy tạo một class riêng, copy các dòng
sau vào
import Foundation
import UIKit
extensionCALayer {
func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) {
let border = CALayer()
switch edge {
caseUIRectEdge.Top:
border.frame = CGRectMake(0, -thickness, CGRectGetWidth(self.frame), thickness)
break
caseUIRectEdge.Bottom:
border.frame = CGRectMake(0, CGRectGetHeight(self.frame), CGRectGetWidth(self.frame), thickness)
break
caseUIRectEdge.Left:
border.frame = CGRectMake(-thickness, 0, thickness, CGRectGetHeight(self.frame))
break
caseUIRectEdge.Right:
border.frame = CGRectMake(CGRectGetWidth(self.frame), 0, thickness, CGRectGetHeight(self.frame))
break
default:
break
}
border.backgroundColor = color.CGColor;
self.addSublayer(border)
}
}
Sau đó tại bất cứ class
nào muốn có viền tuỳ phía, bạn set các lệnh.
la.layer.addBorder(UIRectEdge.Right, color: UIColor.blackColor(), thickness: 0.5)
la.layer.addBorder(UIRectEdge.Top, color: UIColor.blackColor(), thickness: 0.5)
la.layer.addBorder(UIRectEdge.Bottom, color: UIColor.blackColor(), thickness: 0.5)
la.layer.addBorder(UIRectEdge.Left, color: UIColor.blackColor(), thickness: 0.5)
Thế là đã có các viền tuỳ
chọn cho bốn phía, thay đổi độ dày, màu sắc của viền nếu muốn. Có thể dịch chuyển
các viền đi dài ngắn thêm một chút nếu bạn thay đổi các chỉ số trong các case của extension.
Còn
một cách nữa, nếu muốn viền bên trái.
var border = CALayer()
border.backgroundColor = UIColor.redColor().CGColor
border.frame = CGRect(x: -1, y: 0, width: 1.0, height: la.frame.height)
la.layer.addSublayer(border)
Viền phải, thay dòng thứ 3
thành
border.frame = CGRect(x: la.frame.width, y: 0, width: 1.0, height: la.frame.height)
Viền trên đỉnh, thay dòng thứ
3 thành
border.frame = CGRect(x: -1, y: -1, width: la.frame.width, height: 1)
Viền dưới chân
No comments:
Post a Comment