我希望获得与iPad上的照片应用程序完全相同的效果:在图库控制器中使用纯黑色导航栏,然后在查看照片时透明。
在AppDelegate中初始化导航控制器后,我可以使用下面的代码更改样式,但不能在AppDelegate之外。但是,一旦导航控制器在屏幕上并设置一次,navigationBar就会变为只读属性。
如果有人能分享如何做到这一点,我将不胜感激。感谢。
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
答案 0 :(得分:1)
UIBarStyleBlackTranslucent
barStyle
中的UINavigationBar并不像通常在其他样式中那样修复它的位置。在UIBarStyleBlackTranslucent
样式中,它只会在您的视图上重叠,并且视图内容会被翻译,view
高度也会增加。
如果您要显示照片,请先隐藏您的navigationBar:
[[self navigationController] setNavigationBarHidden:YES animated:NO];
现在将navBar的样式设置为UIBarStyleBlackTranslucent
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
然后显示您的imageview(或带有图片的scrollview-取决于您的逻辑)。然后在点击您的imageview时,您可以显示并隐藏栏)
// Show/Hide bar
// Let say you've a bool 'shown' for current status of navbar's visibility.
if (!shown) {
[[self navigationController] setNavigationBarHidden:YES animated:YES];
}else{
[[self navigationController] setNavigationBarHidden:NO animated:YES];
}
shown = !shown;
希望这样做。退出画廊后,永远不会忘记将barStyle重新发送到UIBarStyleBlackOpaque。
答案 1 :(得分:1)
好像你想在Gallery中显示navigationBar所以除了选择照片之后无需更改任何内容,请将NavigationBar隐藏在PhotoViewController中。
-(void) viewDidLoad
{
self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;
self.navigationController.navigationBar.hidden = NO;
}
和ViewWillAppear
-(void) viewWillAppear
{
self.navigationController.navigationBar.hidden = YES;
}
然后创建一个实现UITapGestureRecognizer的自定义方法,在单击时通过将hidden属性设置为YES来显示navigationBar。