【问题标题】:How to make custom rounded UIImageView subclass?如何制作自定义圆形 UIImageView 子类?
【发布时间】:2017-09-15 10:56:10
【问题描述】:

我想制作我的自定义回合UIImageView 并在情节提要中显示它。

我已经完成了下一步:

@IBDesignable
class RoundedImageView: UIImageView {
    override init(image: UIImage?) {
        super.init(image: image)
        super.layer.cornerRadius = super.frame.size.height / 2
        self.layer.cornerRadius = self.frame.size.height / 2    
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        super.layer.cornerRadius = super.frame.size.height / 2
        self.layer.cornerRadius = self.frame.size.height / 2
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        super.layer.cornerRadius = super.frame.size.height / 2
        self.layer.cornerRadius = self.frame.size.height / 2
    }
} 

我在情节提要中的 imageView 是 RoundedImageView 类被选中。 但在情节提要中,它仍然显示为矩形。我怎样才能意识到它? 当我运行代码时,它是四舍五入的。 谢谢

【问题讨论】:

  • 你是说当应用程序运行时,它是圆形的,但在 IB 上它显示为矩形。
  • @ankit 是的,就是这样

标签: swift uiimageview storyboard uikit


【解决方案1】:

你应该在layouts被应用后设置半径。

@IBDesignable
class RoundedImageView: UIImageView {
    override init(image: UIImage?) {
        super.init(image: image)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.frame.size.height / 2
        self.clipsToBounds = true
    }
}

【讨论】:

  • 感谢您的回答。我会在晚上尝试并标记它,如果有帮助:)
  • 谢谢。而已。但是一些代码审查。请确认 ;)
  • wc :) 。您的代码很好,但只需稍作调整,就不需要 super 设置圆角半径。
  • 你在说什么错误。
  • 除了原来的初始化程序覆盖之外,您是否有理由包含初始化程序覆盖?
猜你喜欢
  • 2014-07-02
  • 1970-01-01
  • 2013-01-19
  • 2015-08-17
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多