我不知道我怎麼會去創造,通過堅持一個視圖中的所有在視圖和控制器的應用程序。類似於Soundcloud如何在iPhone應用程序中使用音樂播放器(請參閱圖片)。無論您在應用程序中的哪個位置,音樂播放器視圖都會保留在工具欄下方的頂部。如何創建一個持續貫穿所有其他視圖和控制器的視圖?
alt text http://i1.soundcloud.com/screenshots-000000000025-akaqgr-t500x500.jpg
我不知道我怎麼會去創造,通過堅持一個視圖中的所有在視圖和控制器的應用程序。類似於Soundcloud如何在iPhone應用程序中使用音樂播放器(請參閱圖片)。無論您在應用程序中的哪個位置,音樂播放器視圖都會保留在工具欄下方的頂部。如何創建一個持續貫穿所有其他視圖和控制器的視圖?
alt text http://i1.soundcloud.com/screenshots-000000000025-akaqgr-t500x500.jpg
您可以添加視圖作爲主窗口的子視圖,並把它上面的tabBarController的觀點。它將始終可見。
最基本的答案是建立在視圖層次結構的頂部視圖。
讓我們以上述的基於視圖標籤的屏幕截圖的例子。比方說,該應用的根視圖控制器是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
的view
平先在這裏的順序很重要,那麼持續的觀點來自第二。
如果你想持續以「倒推」的屏幕上欣賞到休息,你就必須改變這種了一下。由於在默認情況下,你是在告訴窗口到根視圖控制器的視圖的全部添加爲一個子視圖,你想要做的,而不是什麼調整rootViewController.view
的frame
因此它不會佔據整個屏幕,並重新定位其origin
。
- (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類來引導測試),它工作正常。