UIScrollView自动滚动64点

时间:2013-12-05 20:45:02

标签: ios iphone objective-c ios7

我正在向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));
}

Screenshot

2 个答案:

答案 0 :(得分:17)

将视图控制器上的automaticallyAdjustsScrollViewInsets设置为NO,否则它会在其根视图的第一个子视图上调整插件,该视图恰好是UIScrollView类。

iOS 7 Transition Guide中的更多内容。

答案 1 :(得分:0)

对于iOS 11或更高版本,请设置UIScrollView的contentInsetAdjustmentBehavior = .never,以防止系统在将contentOffset添加到另一个视图时自动对其进行调整