Skip to content

Instantly share code, notes, and snippets.

@IamMarik
Last active December 24, 2019 11:57
Show Gist options
  • Save IamMarik/40c17982b58a15bdbb5f24f2e2f3b9b8 to your computer and use it in GitHub Desktop.
Save IamMarik/40c17982b58a15bdbb5f24f2e2f3b9b8 to your computer and use it in GitHub Desktop.
TriangleButton
import UIKit
@IBDesignable
class TriangleButton: UIButton {
override class var layerClass: AnyClass {
return CAGradientLayer.self
}
private var gradientLayer = CAGradientLayer()
public override var isHighlighted: Bool {
didSet {
setupView()
}
}
@IBInspectable
var corner: Int = 0 {
didSet {
setupView()
}
}
@IBInspectable
var color1: UIColor = .white {
didSet {
setupView()
}
}
@IBInspectable
var color2: UIColor = .clear {
didSet {
setupView()
}
}
@IBInspectable
var color1Highlight: UIColor = .white {
didSet {
setupView()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
private func setupView() {
self.backgroundColor = .clear
gradientLayer.frame = self.bounds
if !isHighlighted {
gradientLayer.colors = [self.color1.cgColor, self.color2.cgColor]
} else {
gradientLayer.colors = [self.color1Highlight.cgColor, self.color2.cgColor]
}
var startPoint: CGPoint
switch self.corner {
case 1:
startPoint = CGPoint(x: 1, y: 0)
case 2:
startPoint = CGPoint(x: 1, y: 1)
case 3:
startPoint = CGPoint(x: 0, y: 1)
default:
startPoint = CGPoint(x: 0, y: 0)
}
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.5)
gradientLayer.locations = [0.0, 1.0]
self.layer.addSublayer(gradientLayer)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment