Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // GradientBorderedView.swift
- // DiaryOfBloodPressure
- //
- // Created by Aleksandr Smetannikov on 04/10/2019.
- // Copyright © 2019 AlexSmetannikov. All rights reserved.
- //
- import UIKit
- class GradientBorderedView: UIView {
- private var gradientLayer = CAGradientLayer()
- private var borderLayer = CAShapeLayer()
- var colors: [UIColor] = []
- var borderWidth: CGFloat = 1 {
- didSet {
- setNeedsDisplay()
- }
- }
- var cornerRadius: CGFloat = 4 {
- didSet {
- layer.cornerRadius = cornerRadius
- setNeedsDisplay()
- }
- }
- override var frame: CGRect {
- didSet {
- setNeedsDisplay()
- }
- }
- required init?(coder: NSCoder) {
- super.init(coder: coder)
- layer.addSublayer(gradientLayer)
- }
- override init(frame: CGRect) {
- super.init(frame: frame)
- layer.addSublayer(gradientLayer)
- }
- override func draw(_ rect: CGRect) {
- makeGradietBorder()
- super.draw(rect)
- }
- private func makeGradietBorder() {
- gradientLayer.transform = CATransform3DMakeRotation( -CGFloat.pi / 2, 0, 0, 1)
- gradientLayer.frame = CGRect(origin: .zero, size: frame.size)
- gradientLayer.colors = colors.isEmpty ? [] : colors.map { $0.cgColor }
- borderLayer.borderWidth = borderWidth
- borderLayer.cornerRadius = cornerRadius
- borderLayer.path = UIBezierPath(rect: gradientLayer.bounds).cgPath
- borderLayer.strokeColor = UIColor.black.cgColor
- borderLayer.fillColor = UIColor.clear.cgColor
- gradientLayer.mask = borderLayer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement