// // EKStyleView.swift // SwiftEntryKit // // Created by Daniel Huri on 4/28/18. // import UIKit class EKStyleView: UIView { private lazy var borderLayer: CAShapeLayer = { return CAShapeLayer() }() private var roundCorners: EKAttributes.RoundCorners! private var border: EKAttributes.Border! var appliedStyle = false func applyFrameStyle(roundCorners: EKAttributes.RoundCorners, border: EKAttributes.Border) { self.roundCorners = roundCorners self.border = border var cornerRadius: CGFloat = 0 var corners: UIRectCorner = [] (corners, cornerRadius) = roundCorners.cornerValues ?? ([], 0) let size = CGSize(width: cornerRadius, height: cornerRadius) let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: size) if !corners.isEmpty && cornerRadius > 0 { let maskLayer = CAShapeLayer() maskLayer.path = path.cgPath layer.mask = maskLayer } if let borderValues = border.borderValues { borderLayer.path = path.cgPath borderLayer.fillColor = UIColor.clear.cgColor borderLayer.strokeColor = borderValues.color.cgColor borderLayer.lineWidth = borderValues.width borderLayer.frame = bounds layer.addSublayer(borderLayer) } appliedStyle = true } override func layoutSubviews() { super.layoutSubviews() guard let roundCorners = roundCorners, let border = border else { return } applyFrameStyle(roundCorners: roundCorners, border: border) } }