我正在开发一个 iPad 应用程序,我需要创建一个始终位于其他 View 顶部的 UIView
。
A 是我需要创建一个 UIViewController
的区域(将其视为一种侧边栏),该 View 始终位于顶部。 B 是 UIViewController
(及其 View )可以更改的内容区域:根据几个按钮操作(在 A 的 View 内),可以删除当前可见的内容(在本例中为 Controller B 及其 View )并显示其他 Controller (C、D、E 等)及其 View 。
我为我的应用程序创建了所有元素,但我无法在顶部维护 A 的 View ,同时实现用于动态更改内容区域的逻辑。作为要求,我需要 A 始终与 B 重叠。换句话说,B 的一部分(左侧部分)始终位于 A 的区域下方。B 始终扩展整个设备屏幕。
你能给我一些建议吗?
我做了两个配置,但我对它们有问题。
第一次配置
在第一个中,我为 A 创建了一个 UIViewController
(称为 SideBarController
)。我将 SideBarController
View 添加到 UIWindow
(在应用程序委托(delegate)中)。然后,我为 B 创建了一个 UIViewController
(称为 HomeViewController
),并将其添加为我的应用程序的 rootViewController
。
这个解决方案可能是一个有效的解决方案,因为我可以通过我的应用程序委托(delegate)动态地更改内容区域(设置一个新的 rootViewController
),但是 SideBarController
始终保持在当前可见 View 。
第二配置
在第二个中,我创建了一个 UIViewController
(称为 MainViewController
)并将其添加为我的应用程序的 rootViewController
。然后在 MainViewController
中,我为 A 创建了一个 UIViewController
(称为 SideBarController
),并将 SideBarController
View 添加到 主视图 Controller
。然后填充内容区域,为 B 创建一个 UIViewController
(称为 HomeViewController
)并将其添加到 MainViewController
。
侧边栏始终位于顶部,但我很难动态更改 MainViewController
中的内容区域。如何访问内容区域并更改它?
注意我知道 UIKit 上的标准组件,但由于用户规范,我需要实现这样的解决方案。
最佳答案
我会首先尝试在 UIPopoverController
中实现您的边栏。它针对此类问题设计得非常好,您可以对其进行广泛自定义以满足您的 UI 需求。如果 UIPopoverController
给您带来某种问题,我会把侧边栏放在它自己的 UIWindow
中并将其 float 在主窗口上。
编辑
就我个人而言,我会自己选择弹出窗口,因为它更适合此类问题。我想到的另一个想法是我过去使用过的一个UIView
,您可以将它直接添加到UIWindow
([view window]
从任何角度来看都会让你成为主要的)。请记住,UIWindow
只是一种特殊的 UIView
。此问题和 UIWindow
解决方案的问题在于,您必须执行自己的旋转逻辑,如果您有自动旋转,这可能比听起来更棘手。如果您可以使用 UIPopoverController
,它会非常干净、自动地处理所有这些。
如果您追求 UIWindow
,请参阅 View 编程指南的 Windows 部分:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingWindows/CreatingWindows.html
关于ios - UIView 侧边栏始终在顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820236/