当带有contentInset的UIScrollView从autoresize更改其框架时,contentOffset会发生什么变化?

时间:2015-01-27 01:54:18

标签: ios objective-c iphone uiscrollview

我遇到一个问题,滚动视图在iPhone 5屏幕(320点宽)上的行为与预期相同,但当它的超视图自动调整以适合iPhone 6屏幕时,它将具有负水平contentOffset( 375分宽)。偏移可能为负的原因是因为视图左侧还有contentInset。但是因为在自动调整大小之前它是0,所以我希望它在之后仍为0。

我在UIScrollView子类的initWithStyle:reuseIdentifier:方法中设置UITableViewCell,如下所示:

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.contentView.bounds];
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.contentSize = self.contentView.bounds.size;
scrollView.contentInset = UIEdgeInsetsMake(0, 100, 0, 0);
[self.contentView addSubview:scrollView];

此时我可以确认contentOffset是(0,0)(大概是因为所有内容都会被自动调整以适应后来的iPhone 6屏幕)。我尝试用各种方法探测价值。在setFrame它是(0,0)但在第一次调用layoutSubviews时它是(-55,0) - 可能是因为iPhone 6和iPhone 5水平显示点之间的差异是375 - 320 = 55

以下是iPhone 6屏幕上发生的事情的屏幕截图(在此屏幕截图中,我在滚动视图中添加了其他视图,以便以图形方式显示):

0 个答案:

没有答案