swift - 如何制作自定义圆形 UIImageView 子类?

标签 swift uiimageview storyboard uikit

我想制作我的自定义回合 UIImageView 并在 Storyboard 中显示它。

接下来我做了:

@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
    }
} 

而我在 Storyboard中的 imageView 是选择了 RoundedImageView 类。 但在 Storyboard 中它仍然显示为矩形。我怎样才能意识到呢? 当我运行代码时,它是四舍五入的。 谢谢

最佳答案

您应该在应用布局之后设置半径。

@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
    }
}

关于swift - 如何制作自定义圆形 UIImageView 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43491875/

相关文章:

swift - 在 swift 中将带有参数的函数分配给变量

iphone - UIImage 从服务器逐步显示

ios - 强制 UIViewController 正确布局而不将其显示在屏幕上

ios - 使用performSegueWithIdentifier/编程方式快速更改 View

ios - 使用 segue ios 恢复 View 状态

swift - 没有 'items' 候选者产生预期的上下文结果类型 '(Observable<[Product]>) -> (_) -> _'

ios - UIImageView 带有像 Facebook Messenger 一样的 subview

ios - 使 UIImageView 适合 UIImage

ios - Xcode 7 Beta 4 - 每次运行该项目时都找不到 Storyboard

swift - 如何在 Swift 中为 CaseIterable 枚举实现 'next' 属性