小编Ada*_*ams的帖子

如何创建一个自己舍入的UIImageView扩展

我最近遇到了一个恼人的问题.

假设我想在我的应用程序中的多个位置使用图像,并且在任何地方都必须将其舍入为圆形.因为我想我的代码是干净的,我认为这个功能(舍入本身)应放在内部延伸的UIImageView类.我创建了一个简单的类来覆盖storyboard构造函数,并负责正确设置cornerRadius:

class RoundedImageView: UIImageView {


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.cornerRadius = self.frame.size.width/2
        self.layer.borderColor = UIColor.redColor().CGColor
        self.layer.borderWidth = 2
        self.layer.masksToBounds = true
    }
}
Run Code Online (Sandbox Code Playgroud)

对于喜欢的约束

  • 宽度:100,
  • 身高:100

    这显然有效,因为在调用构造函数后框架不会更改(因为它在storyboard中具有正确的尺寸).例如,当约束看起来像这样时,就会出现问题:

  • 宽度等于0.5 superview的

  • 纵横比:1:1

因为在调用构造函数后框架会发生变化.

我最终做的是这样的:

override func viewDidLayoutSubviews(){
    super.viewDidLayoutSubviews()
    myRoundedImageInstance.layer.cornerRadius = ...
}
Run Code Online (Sandbox Code Playgroud)

在每个视图控制器中都有这个类的实例......这是有效的,因为在imageView改变维度之后重新计算框架,但这很难看,在这种情况下似乎没有类的存在.

我尝试将frame的重新计算放在drawRect中 - 也不起作用.有任何想法吗?

uiimage ios swift

0
推荐指数
1
解决办法
1130
查看次数

标签 统计

ios ×1

swift ×1

uiimage ×1