UIScrollview Autolayout问题

Mat*_*ger 30 iphone uiscrollview ios autolayout ios6

我有autolayout(也许)和我的scrollview的问题!

我的问题

  1. 我向下滚动 视图

然后我推到另一个视图

然后我回去看看它的滚动视图,我无法滚动到最高点.(我在滚动视图的弹跳中看到它) 滚动型

有谁能够帮我?

use*_*136 40

包含视图控制器中的以下代码片段似乎也解决了问题,而不依赖于显式大小:

- (void)viewDidDisappear:(BOOL)animated {
  [super viewDidDisappear:animated];
  self.mainScrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)

它确实将内容偏移重置为原点,但其他答案似乎也是如此.

  • 在viewDidLayoutSubviews中设置正确的偏移量,一切都很好:) (3认同)

小智 11

如果你还在寻找一个答案,我今天发现了它,这是在两天撞墙之后发现的.我只是粘贴你的代码,但最重要的是你加载你的scrollView ..

    -(void)viewWillAppear:(BOOL)animated{

    [scrollView setFrame:CGRectMake(0, 0, 320, 800)];
}

-(void)viewDidAppear:(BOOL)animated
{
    [scrollView setScrollEnabled:YES];
    [scrollView setContentSize:CGSizeMake(320, 800)];

}
Run Code Online (Sandbox Code Playgroud)

所有这些都是之前加载的 -(void)viewDidLoad

请注意高度在两个实例800中,这对于解决此问题至关重要.祝你的项目好运;)


Kuk*_*osk 6

我正在使用亚当的解决方案,但当我用动画解雇时开始出现问题:是的.在我的代码中,内容偏移量在viewWillAppear之后设置了一段时间(因为viewWillAppear看起来太快了).

- (void)viewDidDisappear:(BOOL)animated
{
    self.scrollOffsetToPersist = self.scrollView.contentOffset;
    self.scrollView.contentOffset = CGPointZero;

    [super viewDidDisappear:animated];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[NSOperationQueue mainQueue] addOperationWithBlock:^
     {
         self.scrollView.contentOffset = self.scrollOffsetToPersist;
     }];
}
Run Code Online (Sandbox Code Playgroud)

编辑:另一种更好的方法是在viewDidLayoutSubviews中重置它:)

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    if(!CGPointEqualToPoint(CGPointZero, self.scrollOffsetToPersist))
    {
        self.scrollView.contentOffset = self.scrollOffsetToPersist;
        self.scrollOffsetToPersist = CGPointZero;
    }
}
Run Code Online (Sandbox Code Playgroud)