automaticallyAdjustsScrollViewInsets

一、UIViewController的automaticallyAdjustsScrollViewInsets属性

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets;// Defaults to YES
 API_DEPRECATED("Use UIScrollView's contentInsetAdjustmentBehavior instead", ios(7.0,11.0),tvos(7.0,11.0)) 

UIViewController的一个属性:(iOS7.0引入,11.0废除,之后其作用被UIScrollView的新属性contentInsetAdjustmentBehavior所取代,如设置为UIScrollViewContentInsetAdjustmentAutomatic等);
作用:默认情况下,它可以保证滚动视图的内容自动偏移,不会被UINavigationBar与UITabBar遮挡。

简要说明:

UINavigationBar与UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器的UI布局进行优化:当视图控制器里面【第一个】被添加进去的视图是UIScrollView或其子类时,系统会自动调整其内边距属性contentInset,以保证滑动视图里的内容不被UINavigationBar与UITabBar遮挡。

(一)、automaticallyAdjustsScrollViewInsets为YES时(即默认情况):

(A).UINavigationBar与UITabBar的translucent属性为YES(也即默认情况下)
//UITextView是滑动视图,内容自动向下偏移,不会被导航栏覆盖
    //leftTextView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
    UITextView *leftTextView = [[UITextView alloc] init];
    leftTextView.frame = CGRectMake(0, 0,100, 736);
    leftTextView.backgroundColor = [UIColor lightGrayColor];
    leftTextView.text = @"君不见,黄河之水天上来,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。";
    leftTextView.font = [UIFont systemFontOfSize:18];
    leftTextView.editable = NO;
    [self.view addSubview:leftTextView];

//UIView是非滑动视图,内容被导航栏部分覆盖
    UIView *rightView= [[UIView alloc] initWithFrame:CGRectMake(150, 0, 100, 100)];
    rightView.backgroundColor = [UIColor redColor];
    [self.view addSubview:rightView];
效果图(1)

效果图(2)

结论:UITextView未被遮挡,rightView被遮挡,这是最常见的情况。

(B).UINavigationBar与UITabBar的translucent属性为NO时:
效果图(1)

效果图(2)

结论:UITextView未被遮挡,rightView也未被遮挡。

总结:默认情况下,滚动视图的内容不会被UINavigationBar与UITabBar所遮挡,其contentInset会自动调整;非滚动视图会不会被遮挡,取决于UINavigationBar与UITabBar是否半透明。

(二)、设置automaticallyAdjustsScrollViewInsets为NO时:

(A).UINavigationBar与UITabBar的translucent属性为YES(也即默认情况下)
效果图(1)

效果图(2)

结论:UITextView被遮挡,rightView也被遮挡。

(B).UINavigationBar与UITabBar的translucent属性为NO时:
效果图(1)

效果图(2)

结论:UITextView未被遮挡,rightView也未遮挡。

总结:设置automaticallyAdjustsScrollViewInsets为NO时,滚动视图被视为普通的view,其内容会不会被UINavigationBar与UITabBar所遮挡取决于UINavigationBar与UITabBar是否半透明:半透明:会被遮挡;不透明,不会被遮挡。(额。。。貌似UITableView例外,如论如何,其内容都不会遮挡。。。)

综上所述

automaticallyAdjustsScrollViewInsets的设置只对滚动视图有效,对普通的view无效;对普通view而言,UINavigationBar与UITabBar半透明:会被遮挡;不透明,不会被遮挡。如果两个都是默认情况下,则滚动视图的内容不会被遮挡,普通的view会被遮挡,这是最常见的情况。

二、UIViewController的edgesForExtendedLayout属性

typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
    UIRectEdgeNone   = 0,
    UIRectEdgeTop    = 1 << 0,
    UIRectEdgeLeft   = 1 << 1,
    UIRectEdgeBottom = 1 << 2,
    UIRectEdgeRight  = 1 << 3,
    UIRectEdgeAll    = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
} NS_ENUM_AVAILABLE_IOS(7_0);

@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll

edgesForExtendedLayout:边缘延伸属性,默认为UIRectEdgeAll。它也是视图控制器的布局属性,默认值是UIRectEdgeAll,即:当前视图控制器里各种UI控件【本身】(而非内容)会忽略导航栏和标签的存在,布局时若设置其原点设置为(0,0),视图会延伸显示到导航栏的下面被覆盖;其值为UIRectEdgeNone意味着子控件本身会自动躲避导航栏和标签栏,以免被遮挡。

    self.edgesForExtendedLayout = UIRectEdgeNone;
效果图(1)

三、导航栏的translucent属性

@property(nonatomic,assign,getter=isTranslucent) BOOL translucent NS_AVAILABLE_IOS(3_0) UI_APPEARANCE_SELECTOR; 
// Default is NO on iOS 6 and earlier. Always YES if barStyle is set to UIBarStyleBlackTranslucent

默认为YES,意味着子控件以(0,0)点为坐标系布局;
设置为NO时,意味着子控件以(0,64)点为坐标系布局(不太准确,应为导航栏左下角为坐标系原点);

self.navigationController.navigationBar.translucent = NO;

参考文章://www.greatytc.com/p/50cd38f2772c

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

推荐阅读更多精彩内容