轉載至:http://blog.csdn.net/riveram/article/details/7291142
狀態條StatusBar
- [UIApplication?sharedApplication].statusBarHidden?=?YES;??
[UIApplication sharedApplication].statusBarHidden = YES;
?導航條NavigationBar
- [self.navigationController?setNavigationBarHidden:YES];??
[self.navigationController setNavigationBarHidden:YES];
TabBar
方法1
- [self.tabBarController.tabBar?setHidden:YES];??
[self.tabBarController.tabBar setHidden:YES];
這個方法有問題,雖然tabBar被隱藏了,但是那片區域變成了一片空白,無法被其他視圖使用。
方法2
對于navigationController+tabBarController的結構,可以在push下一級的childController之前將childController的hidesBottomBarWhenPushed屬性設為YES。
比如,可以在childController的初始化方法中做這件事,代碼如下:
- //?The?designated?initializer.??Override?if?you?create?the?controller?programmatically?and?want?to?perform?customization?that?is?not?appropriate?for?viewDidLoad.??
- ???
- ?-?(id)initWithNibName:(NSString?*)nibNameOrNil?bundle:(NSBundle?*)nibBundleOrNil?{??
- ?????self?=?[super?initWithNibName:nibNameOrNil?bundle:nibBundleOrNil];??
- ?????if?(self)?{??
- ?????????//?Custom?initialization.??
- ?????????self.hidesBottomBarWhenPushed?=?YES;??
- ?????}??
- ?????return?self;??
- ?}??
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
self.hidesBottomBarWhenPushed = YES;
}
return self;
}
方法3
- -?(void)makeTabBarHidden:(BOOL)hide??
- ?{??
- ?????if?(?[self.tabBarController.view.subviews?count]?<?2?)??
- ?????{??
- ?????????return;??
- ?????}??
- ?????UIView?*contentView;??
- ??????
- ?????if?(?[[self.tabBarController.view.subviews?objectAtIndex:0]?isKindOfClass:[UITabBar?class]]?)??
- ?????{??
- ?????????contentView?=?[self.tabBarController.view.subviews?objectAtIndex:1];??
- ?????}??
- ?????else??
- ?????{??
- ?????????contentView?=?[self.tabBarController.view.subviews?objectAtIndex:0];??
- ?????}??
- ?????//????[UIView?beginAnimations:@"TabbarHide"?context:nil];??
- ?????if?(?hide?)??
- ?????{??
- ?????????contentView.frame?=?self.tabBarController.view.bounds;??????????
- ?????}??
- ?????else??
- ?????{??
- ?????????contentView.frame?=?CGRectMake(self.tabBarController.view.bounds.origin.x,??
- ????????????????????????????????????????self.tabBarController.view.bounds.origin.y,??
- ????????????????????????????????????????self.tabBarController.view.bounds.size.width,??
- ????????????????????????????????????????self.tabBarController.view.bounds.size.height?-?self.tabBarController.tabBar.frame.size.height);??
- ?????}??
- ??????
- ?????self.tabBarController.tabBar.hidden?=?hide;??
- ?????//????[UIView?commitAnimations];?????
- ?}??
- (void)makeTabBarHidden:(BOOL)hide
{
if ( [self.tabBarController.view.subviews count] < 2 )
{
return;
}
UIView *contentView;
if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
{
contentView = [self.tabBarController.view.subviews objectAtIndex:1];
}
else
{
contentView = [self.tabBarController.view.subviews objectAtIndex:0];
}
// [UIView beginAnimations:@"TabbarHide" context:nil];
if ( hide )
{
contentView.frame = self.tabBarController.view.bounds;
}
else
{
contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
self.tabBarController.view.bounds.origin.y,
self.tabBarController.view.bounds.size.width,
self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
}
self.tabBarController.tabBar.hidden = hide;
// [UIView commitAnimations];
}
時機
- -?(void)viewWillAppear:(BOOL)animated?{??
- ?????[self?setFullScreen:YES];??
- ?}??
- ???
- ?-?(void)viewWillDisappear:(BOOL)animated?{??
- ?????[self?setFullScreen:NO];??
- ?}??
- ???
- ?-?(void)setFullScreen:(BOOL)fullScreen?{??
- ?????//?狀態條 ??
- ?????[UIApplication?sharedApplication].statusBarHidden?=?fullScreen;??
- ?????//?導航條 ??
- ?????[self.navigationController?setNavigationBarHidden:fullScreen];??
- ?????//?tabBar的隱藏通過在初始化方法中設置hidesBottomBarWhenPushed屬性來實現。??
- ?}??
- (void)viewWillAppear:(BOOL)animated {
[self setFullScreen:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[self setFullScreen:NO];
}
- (void)setFullScreen:(BOOL)fullScreen {
// 狀態條
[UIApplication sharedApplication].statusBarHidden = fullScreen;
// 導航條
[self.navigationController setNavigationBarHidden:fullScreen];
// tabBar的隱藏通過在初始化方法中設置hidesBottomBarWhenPushed屬性來實現。
}