ios拓展1-导航栏偏移

在ios开发中,导航栏一般是必不可少的。比如:UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[YYViewController new]];
但是如果 向控制器 添加一些小的控件,可能会被导航栏遮盖,这个时候我们可以将一下代码,放到 YYViewController 控制器中。

// 禁用自动偏移oc
    self.modalPresentationCapturesStatusBarAppearance = NO;
    self.edgesForExtendedLayout = UIRectEdgeNone;//主要是这句话
    self.extendedLayoutIncludesOpaqueBars = NO;
swift下代码
        self.edgesForExtendedLayout = UIRectEdge.None
        self.modalPresentationCapturesStatusBarAppearance = false
        self.extendedLayoutIncludesOpaqueBars = false

效果如下 这样 YYViewController 会以导航栏左下角为 起点。

Snip20160709_6.png
tips: 如果为tableView时,参数注意
当 automaticallyAdjustsScrollViewInsets 为 NO 时,tableview 是从屏幕的最上边开始,也就是被 导航栏 & 状态栏覆盖
当 automaticallyAdjustsScrollViewInsets 为 YES 时,也是默认行为,表现就比较正常了,
和edgesForExtendedLayout = UIRectEdgeNone 有啥区别? 不注意可能很难觉察, automaticallyAdjustsScrollViewInsets 为YES 时,
tableView 上下滑动时,是可以穿过导航栏&状态栏的,在他们下面有淡淡的浅浅红色
tips2:
extendedLayoutIncludesOpaqueBars 
首先看下官方解释,默认 NO, 但是Bar 的默认属性是 透明的。。。也就是说只有在不透明下才有用
但是,测试结果很软肋,基本区别不大。。。但是对于解决一些Bug 是还是起作用的,比如说SearchBar的
跳动问题
tips3:
//导航条下面是一个UIScrollView,系统会自动的给一个偏移,偏移的值是导航条的高度
    self.automaticallyAdjustsScrollViewInsets= NO;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,775评论 1 14
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,732评论 2 4
  • 一点说明:本文中“导航控制器”区别于“视图控制器”存在 UINavigationController UINavi...
    WeiHing阅读 5,216评论 0 11
  • 从左至右: EL小棕瓶100ml 橘灿密集精华*2 娇兰小蜜蜂精华*2 HABA油最小号——之前没用过,准备最冷的...
    平安符9927阅读 265评论 0 0
  • 今天斯京的气温达到了27度,然而26度就要高温预警了,在这样一个晴好的天气下,我飞向了丹麦 这次赶了最惊险的一次飞...
    一只果冻阅读 191评论 0 0

友情链接更多精彩内容