我正在向UIScrollView
s UIViewController
添加view
。出于某种原因,在将滚动视图添加到视图并显示之前,contentOffset
设置为{0, -64}
,64是状态栏的20加上导航栏的44点(我猜)。下面是一些重现问题的代码和图像。
如何阻止iOS设置contentOffset
?
- (void)viewDidLoad
{
[super viewDidLoad];
_scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 100, 100, 100)];
_scroll.backgroundColor = [UIColor greenColor];
_scroll.delegate = self;
UIView *red = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
red.backgroundColor = [UIColor redColor];
[_scroll addSubview:red];
[self.view addSubview:_scroll];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// outputs {0, -64}
NSLog(@"%@", NSStringFromCGPoint(_scroll.contentOffset));
}
答案 0 :(得分:17)
将视图控制器上的automaticallyAdjustsScrollViewInsets
设置为NO
,否则它会在其根视图的第一个子视图上调整插件,该视图恰好是UIScrollView
类。
iOS 7 Transition Guide中的更多内容。
答案 1 :(得分:0)
对于iOS 11或更高版本,请设置UIScrollView的contentInsetAdjustmentBehavior = .never
,以防止系统在将contentOffset
添加到另一个视图时自动对其进行调整