#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对应的属性是否已经设置。

参考来源:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容