我有一个以编程方式构建UIView的库,它展示了我的自定义行为。可以将此库放入视图层次结构中不同位置的许多不同应用程序中。在某些情况下,视图需要“扩展”以填补屏幕空间。我目前通过让我的代码遍历视图层次结构直到找到没有父级的视图,构建新视图并将其作为找到的视图的子视图插入,然后在两者之间执行动画过渡来完成此操作。退出新视图只是隐藏它的问题,它恢复了以前的状态。
我有两个问题。
显然,这里的目标是让包含的应用程序/视图/控制器尽可能少地完成,而不是创建一个矩形并构建我的视图控制器。
答案 0 :(得分:1)
为什么不直接调用presentModalViewController?默认情况下,这会从底部动画到屏幕上,但您可以通过传递NO作为动画选项然后控制自己来阻止这种情况。
这是视图/控制器/应用程序暂时将UI控制权交给另一个模块的设计方式。
答案 1 :(得分:1)
顶级视图是UIWindow;您可以通过调用[UIApplication sharedApplication].keyWindow
获取密钥(当前)窗口。 (几乎所有应用程序只有一个窗口。)除此之外,向上查看视图层次结构是完全合法的。
编辑:我刚刚注意到UIView有一个window
属性可以直接进入视图窗口,所以你根本不需要走层次结构。
至于发生的坏事,除非应用程序的其他部分决定添加或删除关键窗口的直接子视图,否则我无法想到任何事情。另一个可能的问题可能是当您添加视图时文本字段是第一个响应者;键盘可能保持在您的视图之上。
答案 2 :(得分:0)
ddoughty,
我制作了一个youtube教程,展示了如何在Facebook iPhone应用程序中扩展和缩小视图。
希望它可以提供一些帮助:How to make expanding/shrinking views on iPhone SDK
亚当