我想在从资源加载任何 UIView时运行一些代码。
我怎么能这样做,而不必修改每个UIView子类的实现?
注意:子类化UIView不是一个选项。
答案 0 :(得分:1)
您应该将UIView子类化,然后将您的子类用于所有其他UI视图
答案 1 :(得分:1)
您可以考虑创建一个UIView
,它将是 @gsempe 建议的所有UIView
的基本视图类,并实现willMoveToSuperview:
方法
来自文档。
告诉他们的超级视图是 即将更改为指定的 上海华。
- (void)willMoveToSuperview:(UIView *)newSuperview;
- (void)willMoveToWindow:(UIWindow *)newWindow;
答案 2 :(得分:1)
由于我们隐含地讨论资源和NIB,我只能回忆起加载视图的两种方法 - UIViewController
的{{1}}或initWithNibName:bundle
,尽管可能有一些隐私我们无法访问的方法。
所以你可以想到那里的压倒性行为。您可以创建一个自定义loadNibNamed:owner:options:
子类,它将成为所有视图控制器和子类UIViewController
的父级,以覆盖NSBundle
。但这可能取决于你想要完成什么样的任务。
答案 3 :(得分:0)
您可以尝试声明自己的类别并覆盖方法,但我认为这不是一个好习惯。其他方法是扩展UIView子类并覆盖您想要的方法。并在您的应用程序中使用该类而不是UIView。
所以这种方法实际上取决于你的用例。