iOS 11 UIScrollView偏移

原创 2018年04月17日 15:25:40

一、translucent

/*
 New behavior on iOS 7.
 Default is YES.
 You may force an opaque background by setting the property to NO.
 If the navigation bar has a custom background image, the default is inferred 
 from the alpha values of the image—YES if it has any pixel with alpha < 1.0
 If you send setTranslucent:YES to a bar with an opaque custom background image
 it will apply a system opacity less than 1.0 to the image.
 If you send setTranslucent:NO to a bar with a translucent custom background image
 it will provide an opaque background for the image using the bar's barTintColor if defined, or black
 for UIBarStyleBlack or white for UIBarStyleDefault if barTintColor is nil.
 */
@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

iOS 7之后这个属性默认为YES;
1、属性设置YES时:
(1)、如果添加的第一个子视图为UIScrollView,UIScrollView的原点在(0,0),UIScrollView的子视图的原点在(0,64)点开始。
(2)、如果添加第一个子视图非UIScrollView,原点在(0,0)点开始。
2、属性设置为NO时:
(1)、添加的子视图的原点都在(0,64)点开始。

二、automaticallyAdjustsScrollViewInsets

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

该属性在iOS11以后不起作用了;在iOS7-iOS10之间,translucent属性设置为NO时,该属性没有效果,在translucent属性设置为YES的前提下:
1、automaticallyAdjustsScrollViewInsets设置为YES:
(1)、如果添加的第一个子视图为UIScrollView,UIScrollView的原点在(0,0),UIScrollView的子视图的原点在(0,64)点开始。
(2)、如果添加第一个子视图非UIScrollView,原点在(0,0)点开始。
2、automaticallyAdjustsScrollViewInsets设置为NO:
(1)、添加的子视图的原点都在(0,0)点开始。

三、edgesForExtendedLayout

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

该枚举如下几个值:

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);

在translucent属性设置为NO时,该属性没有效果。
在translucent属性设置为YES前提下:
1、edgesForExtendedLayout设置设置为UIRectEdgeNone时;
(1)、添加的子视图的原点都在(0,64)点开始。
2、edgesForExtendedLayout设置设置为UIRectEdgeAll时;
(1)、遵循其他属性设定结果。

四、contentInsetAdjustmentBehavior

/* Configure the behavior of adjustedContentInset.
 Default is UIScrollViewContentInsetAdjustmentAutomatic.
 */
@property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior API_AVAILABLE(ios(11.0),tvos(11.0));

前面说了在iOS11上,automaticallyAdjustsScrollViewInsets已经不起作用了,替换的是该属性,设置如下:

if (@available(iOS 11.0, *)) {
    self.tableview.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}

iOS11上对滚动视图加入了self-sizeing,默认如果不去实现viewForHeaderInSection就不会调用heightForHeaderInSection,
网上好多都是描述如何适配iOS11的tableView的顶部偏移。但是我一直没有试出来,按照网上描述该问题解决如下:

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;

若有朋友有tableView顶部空白的demo,请留言给我,谢谢!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiaobukuang/article/details/79975516

iOS11 UIScrollView 偏移量问题

做项目的时候发现UIScrollView 回弹有问题,不能回弹到原来的位置,只能到状态栏下面,在此记录下 主要是 iOS11 新增的 contentInsetAdjustmentBehavior ...
  • u013767495
  • u013767495
  • 2017-12-11 16:14:00
  • 178

UIScrollView内容偏移的问题

问题: 今天想做UITextView的自适应高度,写了个小demo,发现内容偏移了 可以看到上方有64的偏移,光标是无法到达的。 textView的实现代码: - (void)viewDidL...
  • qq_29909323
  • qq_29909323
  • 2017-08-16 12:20:03
  • 1509

UIScrollview在 iOS 11和iPhone X上偏移的两套完美适配方案

iPhone X已经来了,您的APP完全适配了iOS 11和iPhone X了吗?昨天看到QQ的上下宽黑边,王者荣耀的左右大宽黑边和底部黑边,肾疼,iPhone X要白买了。因iOS11废弃了aut...
  • u011363981
  • u011363981
  • 2017-11-04 17:38:10
  • 332

iOS7之后,关于NavigationBar存在时,UIScrollView内容发生偏移的问题

⭐️最近才遇到的坑,我很纳闷之前为毛没发现: 在使用NavigationBar的ViewController中,navigationbar的下方,添加了一个UIScrollView,类似于网易新闻,...
  • u010731949
  • u010731949
  • 2016-04-20 11:15:02
  • 2823

ios11 一些我淌过的坑

ios11 一些我淌过的坑
  • CrazyDuang
  • CrazyDuang
  • 2017-10-09 16:33:02
  • 980

iOS 11打开系统相册列表向上偏移问题

问题如图 该问题是因为设置了if (@available(iOS 11, *)) { UIScrollView.appearance.contentInsetAdjustmentBe...
  • yanhsheng304
  • yanhsheng304
  • 2017-12-04 17:50:29
  • 458

iOS7的适配小问题, uiscrollview中view向下偏移64

1,首先 1 2 3 4 5 6 7 8 9 //定义宏,判断ios7 #define IOS7 [[[UIDevice currentD...
  • u010948523
  • u010948523
  • 2015-05-21 15:06:15
  • 1067

uiscrollview中view向下偏移64

一个scrollerview(红色,0,64,320,68-64-44)放了2个view,一个blueview,(0,0,320.568-64-44)一个yellowview,(320,0,320,5...
  • a394318511
  • a394318511
  • 2014-07-29 14:48:57
  • 5934

UIScrollview 向下偏移

只要scrollView是其父视图上的第一个子视图,且navigationBar不隐藏的情况下,添加到scrollView里的视图,都会默认下移64个像素。 继承UIScrollview的UITab...
  • u013196181
  • u013196181
  • 2016-04-12 11:21:57
  • 637

[iOS diary]UIScrollView或UITextView 滑动部分无故向下偏移,contentOffset增加64

这是由于ViewController有个 automaticallyAdjustsScrollViewInsets,将偏移
  • kelvict
  • kelvict
  • 2014-07-17 20:29:12
  • 2158
收藏助手
不良信息举报
您举报文章:iOS 11 UIScrollView偏移
举报原因:
原因补充:

(最多只允许输入30个字)