ios - UIView 侧边栏始终在顶部

标签 ios layout uiview uiviewcontroller sidebar

我正在开发一个 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/

相关文章:

ios - 在 UITableViewCell 中插入 UIWebView 以播放动画 GIF

ios - "Downcasting"Swift 中的 C 结构

iOS ARKit 指向 anchor 的指针

android - 960x540 和 854x480 的小部件布局

objective-c - 在 UIScrollview 中放置 View

ios - 如何仅在特定度数范围内为 UIView 的旋转设置动画?

ios - 无法更改 UICollectionView 上的 backgroundView 属性

android - 删除 TabLayout 中的换行符

css - 如何创建这种类型的元素?

iphone - 我应该在我编写的每个文件中导入 UIKit 吗?