搜索
您的当前位置:首页正文

#iOS Dev.#UINavigationController

来源:二三娱乐

导航栏透明渐变

一般导航栏透明渐变需求都会是在有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对应的属性是否已经设置。

参考来源:

Top