带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

Posted

技术标签:

【中文标题】带有透明/模糊导航栏的 iOS 7 视图控制器布局问题【英文标题】:iOS 7 view controller layout issue with transparent/blurred nav bar 【发布时间】:2013-09-18 23:02:27 【问题描述】:

我在 ios 7 中的视图控制器出现问题。我正在尝试找出在导航栏和状态栏下调整视图布局的最佳方法,同时保持导航栏的透明度/模糊性。例如,如果我有一个视图控制器:

def viewDidLoad
  @scroll                      = UIScrollView.alloc.initWithFrame(new_frame)
  @scroll.bounces              = true
  @scroll.delegate             = self
  @scroll.alwaysBounceVertical = true
  @scroll.scrollsToTop         = true
  @scroll.contentSize          = CGSizeMake(UIScreen.mainScreen.bounds.size.width, scroll_frame.size.height)


  self.view.addSubview(@scroll)
end

我的内容出现在导航栏下,我得到了 iOS 7 过渡指南。为了纠正这个问题,如果我在 viewDidLoad 中添加以下内容:

self.edgesForExtendedLayout = UIRectEdgeNone

布局已调整,但导航栏不再具有透明度或模糊性,因为视图没有在其后面延伸。

如果我不调整 scrollView 插图而不是设置布局边缘:

self.automaticallyAdjustsScrollViewInsets = false

然后将我的滚动框架更改为:

def viewDidLoad
  nav_bar_height = self.navigationController.navigationBar.frame.size.height
  status_height  = UIApplication.sharedApplication.statusBarFrame.size.height

  height = nav_bar_height + status_height

  scroll_frame = self.view.bounds

  new_frame = CGRect.new([0, height], [scroll_frame.size.width, scroll_frame.size.height])

  @scroll                      = UIScrollView.alloc.initWithFrame(new_frame)
  @scroll.bounces              = true
  @scroll.delegate             = self
  @scroll.alwaysBounceVertical = true
  @scroll.scrollsToTop         = true
  @scroll.contentSize          = CGSizeMake(UIScreen.mainScreen.bounds.size.width, scroll_frame.size.height)


  self.view.addSubview(@scroll)

end

我不再获得导航栏的透明/模糊。只有当我调整滚动的框架 - 在 x 原点 - 具有新的高度时,这似乎才会发生。所以我想知道为什么会这样,以及如何在不丢失模糊/透明度的情况下最好地调整滚动。

【问题讨论】:

【参考方案1】:

也许你可以试试插入

[scroll setContentInset:UIEdgeInsetsMake(nav_bar_height + status_height, 0.0, 0.0, 0.0)];
[scroll setScrollIndicatorInsets:UIEdgeInsetsMake(nav_bar_height + status_height,0.0,0.0,0.0)];

希望有所帮助

【讨论】:

谢谢!结果我认为我在其他地方使用了一个奇怪的偏移量,这给我带来了问题。

以上是关于带有透明/模糊导航栏的 iOS 7 视图控制器布局问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 状态栏透明

使用 iOS 7 ***布局指南

在整个应用程序中添加带有搜索栏的半透明背景视图控制器

如何在带有导航栏的模态视图中更改 iOS 7 中的 UIStatusBarStyle?

UIView 位于半透明导航栏后面,具有实用创建的视图约束

实现动态内容的透明模糊导航栏