Created
July 4, 2017 10:31
-
-
Save HamzaGhazouani/3fb0ba98556788b909777abde29d3f1f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//: 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