Files
2021-11-16 15:08:55 +03:00

74 lines
2.2 KiB
Swift

import UIKit
@IBDesignable
class DesignView: UIView {
@IBInspectable var fillColor: UIColor = .clear
//MARK: - Gradient
@IBInspectable var gradientColor: UIColor?
@IBInspectable var gradientColor2: UIColor?
@IBInspectable var gradientColor3: UIColor?
@IBInspectable var gradientStartPoint: CGPoint = CGPoint.zero
@IBInspectable var gradientOffset: CGPoint = CGPoint(x: 0, y: 1)
//MARK: - Shadow
@IBInspectable var shadowColor: UIColor = .clear
@IBInspectable var shadowOffset: CGSize = CGSize.zero
@IBInspectable var shadowRadius: CGFloat = 0.0
@IBInspectable var shadowOpacity: CGFloat = 0.0
//MARK: - Radius
@IBInspectable var cornerRadius: CGFloat = 0.0
//MARK: - Border
@IBInspectable var borderColor: UIColor = .clear
@IBInspectable var borderWidth: CGFloat = 0.0
override func draw(_ rect: CGRect) {
if let gradientColor = gradientColor {
var colors: [CGColor] = []
colors.append(fillColor.cgColor)
colors.append(gradientColor.cgColor)
if let gradientColor2 = gradientColor2 { colors.append(gradientColor2.cgColor) }
if let gradientColor3 = gradientColor3 { colors.append(gradientColor3.cgColor) }
let glayer = CAGradientLayer()
glayer.frame = bounds
glayer.colors = colors
glayer.startPoint = gradientStartPoint
glayer.endPoint = gradientOffset
glayer.cornerRadius = radius()
layer.insertSublayer(glayer, at: 0)
} else {
layer.backgroundColor = fillColor.cgColor
}
layer.cornerRadius = radius()
layer.shadowOffset = shadowOffset
layer.shadowOpacity = Float(shadowOpacity / 10.0)
layer.shadowRadius = shadowRadius
layer.shadowColor = shadowColor.cgColor
layer.borderColor = borderColor.cgColor
layer.borderWidth = borderWidth
}
func radius() -> CGFloat {
let minSize = min(width, height)
let radius = ((cornerRadius < 0) ? (minSize / 2) : cornerRadius)
return radius
}
}