iOS 导航栏遮挡视图

导航栏遮盖视图

**iOS7 之前: **

  • UINavigationBar 的 translucent 属性默认 NO。 (导航栏默认完全不透明)

**iOS7 之后: **

  • UINavigationBar 的 translucent 属性默认 YES。(导航栏默认半透明)
  • UIViewController 多了 extendLayoutIncludesOpaqueBars(default: NO)属性。
  • UIViewController 多了 edgesForExtendedLayout(default: UIRectEdgeAll)属性。

说明:extendLayoutIncludesOpaqueBars 延伸布局是否包括不透明的 bar ; edgesForExtendedLayout 延伸布局的样式,默认上下左右全部延伸。


**问题: **

  • 导航栏默认会遮蔽视图,因为视图默认布局为全延伸。

**解决方案: **

  1. 设置(个人用的少)
    self.navigationController.navigationBar.translucent = NO;

  2. 设置

    self.extendedLayoutIncludesOpaqueBars = NO;
    self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;
    或者
    self.edgesForExtendedLayout = UIRectEdgeNone(视图布局时不向任何方向延伸)

posted @ 2017-03-07 15:39  上水的花  阅读(2393)  评论(0)    收藏  举报