好的。您需要一個導航控制器,其根視圖是一個表視圖。然後,通過用戶輸入,您可能希望此表格視圖上移100個像素,而另一個視圖則位於底部。當另一個視圖停留在那裏時,用戶可以繼續使用表格視圖。
這裏是我會怎麼做:
創建一個通用視圖控制器(讓我們稱之爲NavigationWithAuxiliaryViewController
)。此類的根視圖覆蓋了您的所有應用程序窗口。
該視圖有一個UINavigationController
的實例作爲其屬性,如navController
。它還有一個UIView(用於其他視圖)作爲其屬性(例如,auxView
)。將另一個視圖置於底部。但是,這個視圖默認是隱藏的。此外,UINavigationController的根視圖框架覆蓋整個視圖。
當您決定擠壓桌面視圖時,修改UINavigationController的frame
屬性。做這樣的事情(不是這個醜陋雖然):
if (slideViewOn) {
[UIView beginAnimations:@"slideUp" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 260);
auxView.hidden = NO;
[UIView commitAnimations];
} else {
[UIView beginAnimations:@"slideDown" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 480);
auxView.hidden = YES;
[UIView commitAnimations];
}
擠了整個導航/表的東西,最簡單的方法是修改導航控制器的整體框架,這就是爲什麼你需要一個單獨的視圖(在導航控制器之外)的其他視圖。
來源
2011-02-18 01:28:01
MHC