gpt4 book ai didi

ios - 使用新属性扩展 UIView

转载 作者:行者123 更新时间:2023-11-30 11:08:46 28 4
gpt4 key购买 nike

在我的应用程序中,我需要添加到一堆 UIKit对象某些属性;我最初的想法是为我需要的每个元素创建一个子类,并在新类中创建属性,但我意识到这意味着为我正在使用的每个 UI 元素类型编写一个新类。

在我的具体情况下,我想添加一些不同的 View ,例如 UIImageViewUILabel ,两个名为 initial position 的属性和final position类型 CGRect存储初始和最终位置,以便在转换此 View 的方法中使用它。

有什么方法可以在不创建大量类的情况下完成此任务吗?

最佳答案

您可以执行以下操作:

protocol Position {
var initialPosition: Int { get set }
}

不可能只在扩展中声明属性,因此您需要设置 getset。您可以只关联一个值:

private var initialPositionKey: UInt = 0
extension Position {
var initialPosition: Int {
get {
return objc_getAssociatedObject(self, &initialPositionKey) as! Int
}
set {
objc_setAssociatedObject(self, &initialPositionKey, newValue, .OBJC_ASSOCIATION_RETAIN)
}
}
}

然后你像这样扩展你的UIView:

extension UIView: Position {}

以及以下作品:

var view = UIView()
view.initialPosition = 5
print (view.initialPosition) // 5

关于ios - 使用新属性扩展 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com