我需要创建一个将呈现 UIVIew 的类,并有一些代码在它准备好显示之前对其进行初始化。我需要知道 View 何时准备就绪,我的意思是,我需要像 viewDidLoad 或 viewWillAppear 这样的东西,但由于它是 UIVIew,因此缺少这些协议(protocol)。
我无法将其实现为 UIViewController,因为我不想以模态方式呈现它。它实际上是一个需要在屏幕端显示的矩形 View 。
如何声明这个类?如果类是基于 UIView 的,我没有提到的方法。
谢谢
最佳答案
有什么理由不在 UIView
的 initWithFrame
方法中做这种事情?此外,您可以在 layoutSubviews
上做其他事情。 View Controller 具有 viewDidLoad
,因为 View 是延迟加载的(来自 nib 或其他 - 它也有一个 loadView
)。它有 viewWillAppear
和 viewWillDisappear
因为它管理 View (顺便说一句,即使 View Controller 也由另一个 View Controller 管理 - 这些方法称为当您在 UINavigationController 或 UITabBarController 或管理 UIViewController 的此类类中拥有 Controller 时。- View 本身并没有真正管理任何东西。它所知道的只是如何绘制自己。为此,您有 layoutSubViews
, drawRect
等
在 View 加载时做一些繁重的事情肯定会降低 UI 性能。您可能需要实现另一种设计模式,将数据值异步分配给自定义 View 的实例 - 完成后,您调用 layoutSubviews
或 setNeedsDisplay
进行更新 View 。
关于iPhone - 行为类似于 UIViewController 的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891223/