UIScrollView内容偏移问题

时间:2011-01-11 08:24:58

标签: iphone ipad uiscrollview

我正在开发一个iPad应用程序,其中我有一个滚动视图,其大小根据我显示在其中的对象数量动态确定。现在,虽然我没有设置任何内容偏移量,但我发现只要视图加载,滚动视图就会偏移一些量。当我检查偏移量的值时,它显示0.我不明白为什么没有contentOffset值,scrollview就是这样的。有什么理由吗?

我怀疑这与iOS 4.2有关,因为我不记得在iOS 3.2上测试应用程序时出现的这个问题。

更新:它获得的偏移量似乎根据scrollView的contentSize而有所不同。如果scrollView的contentSize与其帧高度(它的垂直滚动视图)匹配,则没有偏移量。随着contentSize增加到scrollView框架高度的值以上,偏移量也会按比例增加。但是,scrollView.contentOffset.y仍然= 0.0

6 个答案:

答案 0 :(得分:1)

如果您使用界面构建器 -

  • 将滚动视图添加到视图
  • 创建另一个视图并添加您需要添加到滚动视图的元素

然后将第二个视图添加到scrollview

在Viewdidload中编写此代码 scrollview.contentsize.y = lastelement.frame.origin.y + lastelement.frame.size.height + 10

这会将scrollview调整为内容大小。它显示第一个元素,可以从上到下滚动。

答案 1 :(得分:1)

UIScrollView在使用iOS 4.2.1的iPad上的行为与在iOS 3中的行为无异。 我还不知道这是一个错误,还是我在文档中遗漏了一些关于进化的东西。

我的scrollview是在xib中创建的,我正在重复使用它来显示同一个类的不同对象。在我的代码中,我只修改了此scrollview的contentSize。

使用NSLog查看时偏移量保持为0,但在屏幕上有所不同。

为了解决我的问题,每次我显示一个新对象时,我最终都会以编程方式创建一个新的scrollview。在你的情况下可能不可能,但对我来说,问题已解决解决了。

答案 2 :(得分:0)

将最后一个元素的frame.origin值和frame.height值的总和分配给scrollView.contentOffset.y

答案 3 :(得分:0)

我遇到了同样的问题。通过在viewWillAppear:animated

中保留用于设置滚动视图的代码来解决此问题
-(void) viewWillAppear:(BOOL)animated
{
    scrollView.frame = self.view.frame;
    scrollView.contentSize = self.view.frame.size;
} 

答案 4 :(得分:0)

如果您使用自动布局并想要设置滚动视图内容的偏移量,这对我有用:

- (void)viewDidLayoutSubviews {
     [super viewDidLayoutSubviews];
     self.myScrollView.contentOffset = CGPointMake(500, 0);
}

答案 5 :(得分:0)

同样在Swift中

class mymodule::kilo2_keystone($userdata = {}) {
  # ...
}