美文网首页
iOS edgesForExtendedLayout autom

iOS edgesForExtendedLayout autom

作者: ricefun | 来源:发表于2019-12-11 14:59 被阅读0次

以下基于UINavigationController 下的 UIViewController 讨论

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

edgesForExtendedLayout

viewController设置这个属性后,其view会根据设置的方向(上、下、左、右、全部)拓展到屏幕对应的四边。其默认属性是UIRectEdgeAll,因此会:


上图所示:红色背景扩展到了navigation bar 和 status bar 后面
当设置成UIRectEdgeNone时,viewcontroller的view将不会扩展view到屏幕边上
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
结果:

automaticallyAdjustsScrollViewInsets

这个属性用于UIScrollView及其子类,像UITableView。当设置为YES时你的tableView内容的起始点可以从navigation bar的底部开始,滑动时内容又能扩展到整个屏幕
YES(default)


NO
注意观察:两种情况都是tableView扩展到屏幕边上的,但是内容的起点是不一样的

extendedLayoutIncludesOpaqueBars

  • 这个是作用于status bar的,即view能否扩展到status bar下面
  • 只有在status bar是不透明的情况在才起作用, status bar的默认属性是透明的,即使你设置(edgesForExtendedLayout to UIRectEdgeAll),也没有效果

所以以下基于status bar 是不透明的情况讨论
1.如果edgesForExtendedLayout = NO (default) ,view的起始点将是status bar的底部
2.如果edgesForExtendedLayout = YES,view的起始点将扩展到status bar下面

参考链接 https://stackoverflow.com/questions/18798792/explaining-difference-between-automaticallyadjustsscrollviewinsets-extendedlayo

相关文章

网友评论

      本文标题:iOS edgesForExtendedLayout autom

      本文链接:https://www.haomeiwen.com/subject/fxvogctx.html