【发布时间】:2017-06-26 00:01:18
【问题描述】:
当我想向 UIView 添加功能以便我的应用程序中的所有视图都获得这些功能时,建议的方法是什么?事实上,我也需要添加一些存储的属性,所以扩展是不可能的。由于我需要处理 Textfields、ImageViews、Views(以及谁知道还会发生什么),我不想为每个子类添加该功能,所以目标是创建 UIView 的子类和我的所有控件(如果可能的话)开箱即用地获取该功能。
使用扩展会很容易,但正如我所说,我也需要存储一些东西,那么这个目标可以通过子类实现吗?或者什么是正确的方法(也许还有第三种选择)
谢谢
【问题讨论】:
-
嘿,我在 2-3 年前看到了一个类似的问题,并且得到了回答 -> 请更好地查看 SO.. 我认为关键是使用这个 developer.apple.com/documentation/objectivec/… 方法......但是你应该小心这一点,因为例如“UITextField”超级是“UIControl”——它似乎也被弃用了
-
是的,像这样的 smt 将是完美的,但显然扼杀了这个选项。我会搜索是否有类似的smt for swift
-
在运行时使用objective-c中的关联属性有一种令人讨厌的方法,但是很糟糕。最好谈谈为什么您认为需要向这些视图添加属性并考虑一些替代方案。作为一般原则,一堆视图用于呈现和编辑模型,通常是我们尝试通过属性丰富的模型。
-
主要是关于转型。我希望我的所有视图在特殊环境中(意味着当父级特殊时)具有所有转换功能(拖动、旋转、缩放......)。而且我认为在 UIView 中这样做会很好,而不是特别针对每个 View(bcz 代码实际上与 UIImageView、UITextView 有 90% 相似)。因此我还需要存储一些转换信息。但似乎我必须为我想要支持的每种视图类型都这样做......
标签: ios iphone uiview subclass extension-methods