Skip to content

Instantly share code, notes, and snippets.

@TramPamPam
Created September 11, 2017 08:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TramPamPam/4523291d24509004c3048abe4a64672e to your computer and use it in GitHub Desktop.
Save TramPamPam/4523291d24509004c3048abe4a64672e to your computer and use it in GitHub Desktop.
Rounded with mask
@IBDesignable
class CorneredButton: UIButton {
@IBInspectable var radius: CGFloat = 2.0
@IBInspectable var border: CGFloat = 0.0
var corners: UIRectCorner? = .allCorners
override func layoutSubviews() {
super.layoutSubviews()
round()
}
func round() {
guard let corners = corners else {
return
}
applyMask(for: corners, radius: radius)
}
private func applyMask(for corners: UIRectCorner, radius: CGFloat) {
let rect = bounds.insetBy(dx: 0, dy: 0)
let maskPath = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = rect
maskLayer.path = maskPath.cgPath
layer.mask = maskLayer
if border > 0 {
layer.borderWidth = border
layer.borderColor = UIColor.Streamtime.mediumGray.cgColor
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment