Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active May 17, 2019 07:36
Show Gist options
  • Save KentarouKanno/d87658237659f6fed2289ce234dc6150 to your computer and use it in GitHub Desktop.
Save KentarouKanno/d87658237659f6fed2289ce234dc6150 to your computer and use it in GitHub Desktop.
UIView + extension

UIView + extension

import UIKit

extension UIView {
    
    /// [UIView+] 自身のSubViewを全て取り除く
    func e_removeAllSubviews() {
        for subview in self.subviews {
            subview.removeFromSuperview()
        }
    }
}

extension UIView {

    /* UIViewのスクリーンショットを取る */
    func snapshot() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, true, 0.0)
        let context = UIGraphicsGetCurrentContext()!
        context.setShouldAntialias(false)
        layer.render(in: context)
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        let png = image.pngData()!
        let pngImage = UIImage.init(data: png)!
        return pngImage
    }
}

★ サイズにアクセスしやすくする

extension UIView {
    
    var x: CGFloat {
        get { return frame.origin.x }
        set (x){ self.frame.origin.x = x }
    }
    
    var y: CGFloat {
        get { return frame.origin.y }
        set (y){ self.frame.origin.y = y }
    }
    
    var width: CGFloat {
        get { return frame.size.width }
        set(width) { self.frame.size.width = width }
    }
    
    var height: CGFloat {
        get { return frame.size.height }
        set(height) { self.frame.size.height = height }
    }
}

★ 角丸、枠線設定      

extension UIView {
    
    func setBorderLayer(width: CGFloat = 1.0, radius: CGFloat = 0, boarderColor: UIColor = UIColor.clear) {
        self.layer.borderWidth   = width
        self.layer.cornerRadius  = radius
        self.layer.borderColor   = boarderColor.cgColor
        self.layer.masksToBounds = true
    }
}

@IBInspectableで枠線、枠線の太さ等を設定する

extension UIView {
    // borderColor
    @IBInspectable var borderColor: UIColor? {
        get { return layer.borderColor.map{ UIColor(cgColor: $0) } }
        set (color){ layer.borderColor = color?.cgColor }
    }
    
    // borderwidth
    @IBInspectable var borderwidth: CGFloat {
        get { return layer.borderWidth }
        set(borderWidth) { layer.borderWidth = borderWidth }
    }
    
    // cornerRadius
    @IBInspectable var cornerRadius: CGFloat {
        get { return layer.cornerRadius }
        set(cornerRadius) { layer.cornerRadius = cornerRadius}
    }
    
    // masksToBounds
    @IBInspectable var masksToBounds: Bool {
        get { return layer.masksToBounds }
        set (masksToBounds) { layer.masksToBounds = masksToBounds}
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment