使用 Swift 扩展 UIView 类

Posted

技术标签:

【中文标题】使用 Swift 扩展 UIView 类【英文标题】:Extended UIView class using Swift 【发布时间】:2014-10-07 20:40:13 【问题描述】:

我一直在尝试继承 UIView 并使用 https://***.com/a/24036440/3324388 的帮助来处理“init(coder)”问题

但是,即使是最基本的尝试,我也经常遇到障碍,我希望有人可以发布一个简单的示例,说明使用 Swift 子类化 UIView 所需的实际代码。

我当前的代码是

//image class
import UIKit

class childView: UIView 


    var image:UIImage!

    required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
    


我不想传递这个 NSCoder 对象(我不确定它做了什么,它使我的代码变得混乱)。您能否发布一个示例,说明如何干净地将 UIView 子类化,然后如何在另一个类中初始化它?

我真的很想扩展我的 UIView 类以获得一些很酷的效果,例如投影、自动缩放和许多其他商品,而无需创建子视图来处理所有这些(例如 UIScrollViews 中的 UIImageViews)

【问题讨论】:

【参考方案1】:

看起来很简单。只需按照代码完成即可。

class MyView : UIView 

    var image = UIImage()

    required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
    

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


var v = MyView()

我正在初始化一个虚拟的UIImage,所以如果你使用你的解包版本,如果它是nil,你不会有一个丑陋的惊喜。

【讨论】:

这如何与覆盖和要求一起工作?什么时候调用所需的? 当参数适合签名时 好吧,我想我在必需和覆盖之间感到困惑。谢谢。 乐于助人,但同时也是被动的侮辱。为什么不只是帮忙?学习者不需要像“无法想象问题是什么……”这样的评判方法。一票赞成,一票反对。

以上是关于使用 Swift 扩展 UIView 类的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 的类扩展函数中使用“self”

如何在包装器 Swift View 中使用自定义 UIView 的扩展功能?

如何覆盖子类的 swift 协议函数(例如 UIView 中的 UILabel)

在 Swift 中平滑扩展 UIView 动画

swift Swift - 扩展以创建弯曲的边缘UIView

扩展 UIView 高度 (Swift)