How to set corner radius of imageView?

后端 未结 10 631
清酒与你
清酒与你 2020-12-13 01:50

In Objective-C such line

self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame)/4.0f;

does its job, I tried it in

相关标签:
10条回答
  • 2020-12-13 02:40

    Marked with @IBInspectable in swift (or IBInspectable in Objective-C), they are easily editable in Interface Builder’s attributes inspector panel.
    You can directly set borderWidth,cornerRadius,borderColor in attributes inspector

    extension UIView {
    
      @IBInspectable var cornerRadius: CGFloat {
    
       get{
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
      }
    
      @IBInspectable var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
      }
    
      @IBInspectable var borderColor: UIColor? {
        get {
            return UIColor(cgColor: layer.borderColor!)
        }
        set {
            layer.borderColor = borderColor?.cgColor
        }
      }
    }
    

    0 讨论(0)
  • 2020-12-13 02:40
    import UIKit
    
    class BorderImage: UIImageView {
    
        override func awakeFromNib() {
            self.layoutIfNeeded()
            layer.cornerRadius = self.frame.height / 10.0
            layer.masksToBounds = true
        }
    }
    

    Based on @DCDC's answer

    0 讨论(0)
  • 2020-12-13 02:44

    There is one tiny difference in Swift 3.0 and Xcode8

    Whenever you want to apply corner radius to UIView, make sure you call yourUIView.layoutIfNeeded() before calling cornerRadius.

    Otherwise, it will return the default value for UIView's height and width (1000.0) which will probably make your View disappear.

    Always make sure that all effects that changes the size of UIView (Interface builder constraints etc) are applied before setting any layer properties.

    Example of UIView class implementation

    class BadgeView: UIView {
    
      override func awakeFromNib() {
    
        self.layoutIfNeeded()
        layer.cornerRadius = self.frame.height / 2.0
        layer.masksToBounds = true
    
       }
     }
    
    0 讨论(0)
  • 2020-12-13 02:46

    try this

    self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame)/4.0
    self.mainImageView.clipsToBounds = true
    
    0 讨论(0)
提交回复
热议问题