Objective c 将UINavigationBar的外观从实心更改为透明

Objective c 将UINavigationBar的外观从实心更改为透明,objective-c,uinavigationcontroller,uinavigationbar,Objective C,Uinavigationcontroller,Uinavigationbar,我想实现与iPad上的Photos应用程序完全相同的效果:在gallery控制器中使用纯黑的导航条,然后在查看照片时透明 在AppDelegate中初始化导航控制器后,我可以使用以下代码更改样式,但不能在AppDelegate之外。但是,一旦导航控制器出现在屏幕上并设置一次,navigationBar将成为只读属性 如果有人能分享如何做到这一点,我将不胜感激。谢谢 self.navigationController.navigationBar.tintColor = [UIColor c

我想实现与iPad上的Photos应用程序完全相同的效果:在gallery控制器中使用纯黑的导航条,然后在查看照片时透明

在AppDelegate中初始化导航控制器后,我可以使用以下代码更改样式,但不能在AppDelegate之外。但是,一旦导航控制器出现在屏幕上并设置一次,navigationBar将成为只读属性

如果有人能分享如何做到这一点,我将不胜感激。谢谢

    self.navigationController.navigationBar.tintColor = [UIColor clearColor];
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

uibarstyleblacktransparent
barStyle
中的UINavigationBar不像在其他样式中那样固定其位置。在
uibarstyleblacktransparent
样式中,它只会在视图上重叠,视图内容会向上转换,
view
高度也会增加

如果要显示照片,请先隐藏导航栏:

[[self navigationController] setNavigationBarHidden:YES animated:NO];
现在将导航栏的样式设置为
uibarstyleblacktransparent

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
然后显示您的imageview(或带有图片的滚动视图-取决于您的逻辑)。然后点击图像视图,可以显示和隐藏栏)


希望这样就行了。退出gallery后,请不要忘记将导航栏样式重新设置为UIBarStyleBlack不透明。

似乎您希望在gallery中显示导航栏,因此无需更改任何内容,但选择照片后,请将导航栏隐藏在PhotoViewController中

-(void) viewDidLoad
 {
  self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;
  self.navigationController.navigationBar.hidden = NO;
 }
并且在视图中将出现

-(void) viewWillAppear 
 {
  self.navigationController.navigationBar.hidden = YES;
 }

然后创建一个实现UITapGestureRecognitizer的自定义方法,通过将hidden属性设置为YES,只需轻触即可显示导航栏。

这是不透明的,它实际上隐藏了导航栏。.YES,它最初隐藏了导航栏。但点击会显示一个透明的导航栏,后面有照片。谢谢,你是一个传奇。我必须说,这是一个奇怪的方式让它工作。
-(void) viewWillAppear 
 {
  self.navigationController.navigationBar.hidden = YES;
 }