解释automaticallyAdjustsScrollViewInsets,extendedLayoutIncludesOpaqueBars,edgesForExtendedLayout的不同

从iOS7开始,控制器就默认添加了全屏属性,因此,你就有更多的方式去操作view的布局,具体用到的属性包括:

  • edgesForExtendedLayout
  • automaticallyAdjustsScrollViewInsets
  • extendedLayoutIncludesOpaqueBars

edgesForExtendedLayout

我们可以根据以上属性设置view的铺满样式。
想象一下,默认情况下,我们从一个普通的UIViewController跳转到一个UINavigationController,view默认的展示样式是从导航栏底部开始。
但是你可以通过设置edgesForExtendedLayout为不同类型来控制view的样式(top, left, bottom, right)。

可以看一下例子:

UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

你没有设置edgesForExtendedLayout的值,其默认的值是UIRectEdgeAll,所以view是延伸到整个屏幕的高度。
效果如下图:

如你所见,红色背景延伸到了状态栏(status bar)下面。
假若你将 edgesForExtendedLayout的值设置为UIRectEdgeNone,意味着你告诉view不要讲其扩展到整个屏幕。
其效果如下:

UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

关于另外一个属性automaticallyAdjustsScrollViewInsets.
这个属性属于UIScrollView或包含UIScrollView的控制器(比如UITableView继承自UIScrollView,UIWebView中也包含UIScrollView)。
如果你想要你的view从导航栏底部开始,但是在滑动时,让其穿透到导航栏的底部。
在这种情况下,如果你将edgesForExtendedLayout设置为UIRectEdgeNone,虽然可以从导航栏底部开始,但滑动时无法穿透到导航栏底部。

怎么办呢?

这时候就显示出automaticallyAdjustsScrollViewInsets的作用了。
如果你将edgesForExtendedLayout的值设置为UIRectEdgeAllautomaticallyAdjustsScrollViewInsets设置为YES(edgesForExtendedLayout默认为UIRectEdgeAllautomaticallyAdjustsScrollViewInsets默认就是YES),就能实现上述需求。
具体如下图:


上图是将edgesForExtendedLayout设置为UIRectEdgeAllautomaticallyAdjustsScrollViewInsets默认就是NO的情况)。


下图是将edgesForExtendedLayout设置为UIRectEdgeAllautomaticallyAdjustsScrollViewInsets默认就是YES的情况)(也就是系统默认情况)


关于另外一个属性。
字面意思是:是否延伸到包含不透明的状态栏。

  • extendedLayoutIncludesOpaqueBars
    这个值是一个补充,默认值是NO;
    默认的苹果的状态栏(status bar)是透明的。如果状态栏不透明,这个试图就不回扩展到不透明的状态栏底部,除非将其值设置为YES
    This value is just an addition to the previous ones. If the status bar is opaque, the views won't be extended to include the status bar too, unless this parameter is YES.
    所以如果状态栏不透明,即使你设置edgesForExtendedLayoutUIRectEdgeAllextendedLayoutIncludesOpaqueBars为NO(默认如此),view不会延伸到状态栏底部的。

怎么判断UIScrollView在使用?

iOS会抓取控制器view的第一个子视图,(也就是index = 0),如果是UIScrollView或者UIScrollView的子类,就可以使用上文描述的属性。

如果视图是普通的UIView,可以添加一个线来解决。

self.navigationController.navigationBar.translucent = NO;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 明确一下以前一知半解的属性吧,文中所有的代码都默认写在UIViewController中,所以self特指控制器。...
    thinkq阅读 2,850评论 2 9
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,441评论 1 14
  • 最近项目里有个需求和导航栏的样式定制有关,深入之后发现之前理解的一些概念有些模糊,刚好趁着这次机会全面整理了一下。...
    Kevin追梦先生阅读 481评论 0 0
  • 在成长的道路上 总有许许多多的 难分难舍/爱恨情仇 谎言欺骗/身不由己 众叛亲离/生离死别 ———————————...
    扎西丁真阅读 168评论 0 3
  • 肯尼亚AA包含了可以从一杯咖好的啡中得到的每一种感觉。令人满意的芬芳,极佳的果酸,明亮的酸度,口感丰富、完美。 肯...
    ManBetter阅读 365评论 3 4