在视图之间切换时,UIScrollview会跳出屏幕

时间:2013-08-09 20:52:48

标签: ios uitableview uiscrollview

我有一个标签栏应用程序,在第一个标签页面中有一个滚动条视图,在第二个标签页面中有一些其他内容。滚动工作完全正常,但是如果我向下滚动然后切换到第二个选项卡然后再返回滚动视图跳到目前为止整个事情已经超出框架我可以向上滚动并向中途返回到最佳。如果我回到第二个选项卡,然后再回到带有滚动视图的选项卡,它就会回到它的位置就好了,但是每次我第一次切换时我运行应用程序它只是飞离屏幕很远。

所以我添加了一个我认为可以修复问题的方法,它看起来像这样:@property (nonatomic) float lastScrollHeight;

@synthesize lastScrollHeight = _lastScrollHeight;

-(float)lastScrollHeight{
    if(!_lastScrollHeight) _lastScrollHeight = 0;
    return _lastScrollHeight;
}



 -(void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    [self.scroll setContentOffset:CGPointMake(0.0f, self.lastScrollHeight) animated:NO];
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.lastScrollHeight = self.scroll.bounds.origin.y;
    [self resetApplesBrokenScrollview];
}

-(void)resetApplesBrokenScrollview{
    [self.scroll setContentOffset:CGPointZero];
    CGRect sFrame = self.scroll.bounds;
    sFrame.origin = CGPointZero;
    self.content.bounds = sFrame;
    CGRect cFrame = self.scroll.frame;
    cFrame.origin = CGPointZero;
    self.content.frame = cFrame;
}

在viewDidLoad方法中:

[super viewDidLoad];
[scroll setScrollEnabled:YES];
[scroll setContentSize:CGSizeMake(320, 1900)];
scroll.contentInset=UIEdgeInsetsMake(0.0,0.0,1919.0,0.0);

我对这段代码非常有信心,但是接缝错了......任何帮助都会受到赞赏。 thx:)

1 个答案:

答案 0 :(得分:1)

即使您有一个很长的列表,这也就是您设置内容的原因。这个巨大的底部插图毫无意义,因为它已经超出了你的screenSize.height。

如果你有f.i.一个视图重叠你的scrollView然后你需要提供一个contentInset与重叠视图的高度(只是一个例子)。

您的scrollView框架应该是您希望内容滚动的尺寸.contentSize是内容占用/需要的实际尺寸。