Iphone 如何创建通过所有其他视图和控制器保持的视图?
我想知道我将如何创建一个视图,该视图通过应用程序中的所有overview和controller持久化。类似于Soundcloud如何在iPhone应用程序中使用音乐播放器(见图)。无论您在应用程序中的哪个位置,音乐播放器视图都位于工具栏下方的顶部Iphone 如何创建通过所有其他视图和控制器保持的视图?,iphone,objective-c,model-view-controller,user-interface,Iphone,Objective C,Model View Controller,User Interface,我想知道我将如何创建一个视图,该视图通过应用程序中的所有overview和controller持久化。类似于Soundcloud如何在iPhone应用程序中使用音乐播放器(见图)。无论您在应用程序中的哪个位置,音乐播放器视图都位于工具栏下方的顶部 您可以添加一个视图作为主窗口的子视图,并将其放置在Tabbar控制器的视图上方。然后它将始终可见。基本答案是在视图层次结构的顶部创建一个视图 让我们以上面基于选项卡视图的屏幕截图为例。假设应用程序的根视图控制器是UITabBarController的一
您可以添加一个视图作为主窗口的子视图,并将其放置在Tabbar控制器的视图上方。然后它将始终可见。基本答案是在视图层次结构的顶部创建一个视图 让我们以上面基于选项卡视图的屏幕截图为例。假设应用程序的根视图控制器是
UITabBarController
的一个子类,称为RootViewController
通常,您的应用程序委托将有一个类似于以下内容的方法:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:rootViewController.view];
[window makeKeyAndVisible];
}
如果您希望视图只是“重叠”,这很简单。假设您希望“持久视图”的高度为100像素,并拉伸屏幕宽度。假设您已经为该视图创建了一个类,称为PeristentView。您的代码如下所示:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:rootViewController.view];
PersistentView* persistentView = [[PersistentView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
[window addSubview:persistentView];
[persistentView release];
[window makeKeyAndVisible];
}
这里的顺序很重要,因为您希望持久视图位于视图层次结构的下方,因此rootViewController
的视图
首先绘制,然后持久视图再绘制
如果希望持久视图“向下推”屏幕上的其余视图,则必须将其向上修改一点。默认情况下,您告诉窗口将根视图控制器的整个视图添加为子视图,因此您要做的是调整rootViewController.view的帧的大小,使其不占用整个屏幕并重新定位其原点
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
PersistentView* persistentView = [[PersistentView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
[window addSubview:persistentView];
[persistentView release];
CGRect frame = rootViewController.view.frame;
frame.size.height -= persistentView.frame.size.height;
frame.origin.y += persistentView.frame.size.height;
rootViewController.view.frame = frame;
[window addSubview:rootViewController.view];
[window makeKeyAndVisible];
}
我刚刚用一个现有的基于选项卡栏的项目(使用一个普通的UIView
,而不是创建一个PersistentView类来引导测试)对此进行了测试,结果很好