1

我有一个库,它以编程方式构造一个 UIView 来展示我的自定义行为。这个库可以放入视图层次结构中不同位置的许多不同应用程序中。在某些情况下,视图需要“扩展”以填充屏幕空间。我目前正在这样做,让我的代码遍历视图层次结构,直到找到没有父视图的视图,构造一个新视图并将其作为找到的视图的子视图插入,然后在两者之间执行动画转换。退出该新视图只是隐藏它的问题,它会恢复以前的状态。

我有两个问题。

  1. 有一个更好的方法吗?(特别是,我不太喜欢像那样遍历视图层次结构。)
  2. 这种方法会发生什么坏事?例如,可能出错的一件事是,之前显示的视图不知道这已经发生,因此可能会出现异常行为。(这可以通过为这种行为发明一个委托协议或使用我目前不知道的现有协议来解决。)

显然,这里的目标是要求包含的应用程序/视图/控制器尽可能少地做,而不是创建一个矩形并构造我的视图的控制器。

4

3 回答 3

1

为什么不直接调用 presentModalViewController?默认情况下,它从底部动画到屏幕上,但您可以通过将 NO 作为动画选项传递,然后控制您自己的动画选项来防止这种情况。

这是视图/控制器/应用程序暂时将 UI 控制权交给另一个模块的设计方式。

于 2009-03-24T18:00:05.277 回答
1

安德鲁,我认为他没有这样做,因为他不想要上滑动画。

顶层视图是一个 UIWindow;您可以通过调用获取关键(当前)窗口[UIApplication sharedApplication].keyWindow。(几乎所有应用程序都只有一个窗口。)除此之外,在视图层次结构中向上走是完全合法的。

编辑:我刚刚注意到 UIView 有一个window属性可以让你直接进入视图的窗口,所以你根本不需要遍历层次结构。

至于发生的坏事,我真的想不出来,除非应用程序的其他部分决定添加或删除关键窗口的直接子视图。另一个可能的问题是,当您添加视图时,文本字段是否是第一响应者;键盘可能会停留在您的视野上方。

于 2009-03-24T18:21:20.233 回答
0

顽固,

我制作了一个 youtube 教程,展示了如何像在 facebook iPhone 应用程序中一样使视图扩大和缩小。

希望对您有所帮助:How to make expand/shrinking views on iPhone SDK

亚当

于 2010-08-16T14:00:34.517 回答