美文网首页
#iOS Dev.#UINavigationController

#iOS Dev.#UINavigationController

作者: HeminWon | 来源:发表于2017-07-25 16:45 被阅读30次

导航栏透明渐变

一般导航栏透明渐变需求都会是在有TableView或者ScrollView的页面进行,此时该如何对这些视图进行布局才能避免在代码中因为tabBar和navigationBar的高度影响而写一些判断逻辑呢?

针对以上问题需要了解清楚以下几个属性:

// 布局相关API
@property (nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
@property (nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0. 
@property (nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
// tabBar和navigationBar的半透明属性相关API
@property (nonatomic, getter=isTranslucent) BOOL trancslucent NS_AVAILABLE_IOS(7_0);

注意:

  1. - (void)viewDidLoad方法中得到的frame始终为显示屏幕的frame,当我们需要对页面进行布局时正确的方式是在- (void)viewWillLayoutSubviews中处理,此方法中控制器view的frame才会受以上属性影响。
  2. 若控制器是由Storyboard或者xib加载出来,需注意右侧Utilities面板Attributes inspector菜单下View Controller对应的属性是否已经设置。

参考来源:

相关文章

网友评论

      本文标题:#iOS Dev.#UINavigationController

      本文链接:https://www.haomeiwen.com/subject/sgzwkxtx.html