Skip to content

Instantly share code, notes, and snippets.

@HamzaGhazouani
Created July 4, 2017 10:31
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HamzaGhazouani/3fb0ba98556788b909777abde29d3f1f to your computer and use it in GitHub Desktop.
Save HamzaGhazouani/3fb0ba98556788b909777abde29d3f1f to your computer and use it in GitHub Desktop.
//: A UIKit based Playground to present user interface
import UIKit
import PlaygroundSupport
protocol Traceable {
var cornerRadius: CGFloat { get set }
var borderColor: UIColor? { get set }
var borderWidth: CGFloat { get set }
func addDefaultBorder()
}
extension Traceable where Self: UIView {
var cornerRadius: CGFloat {
get { return layer.cornerRadius }
set {
layer.masksToBounds = true
layer.cornerRadius = newValue
}
}
var borderColor: UIColor? {
get {
guard let cgColor = layer.borderColor else { return nil }
return UIColor(cgColor: cgColor)
}
set { layer.borderColor = newValue?.cgColor }
}
var borderWidth: CGFloat {
get { return layer.borderWidth }
set { layer.borderWidth = newValue }
}
func addDefaultBorder() {
layer.masksToBounds = true
layer.cornerRadius = 20
layer.borderWidth = 2
layer.borderColor = UIColor.red.cgColor
}
}
extension UIImageView: Traceable {}
extension UIButton: Traceable {}
let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 280, height: 280)
let imageView = UIImageView()
imageView.backgroundColor = .green
imageView.frame = CGRect(x: 65, y: 65, width: 150, height: 150)
imageView.addDefaultBorder()
view.addSubview(imageView)
let button = UIButton()
button.backgroundColor = .blue
button.addDefaultBorder()
button.frame = CGRect(x: 00, y: 240, width: 280, height: 40)
view.addSubview(button)
PlaygroundPage.current.liveView = view
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment