【问题标题】:UIScrollview shifting contents up after scrolling down and pushing new viewcontrolerUIScrollview 在向下滚动并推送新的视图控制器后向上移动内容
【发布时间】:2013-08-08 09:41:16
【问题描述】:

我无法在我的 uiscrollview 上找出这个问题。单击按钮将新视图控制器推送到屏幕上后,我的 uiscrollview 中的内容会向上移动,然后返回到原始视图控制器。注意滚动视图的顶部是如何变化的。

这是滚动视图的代码

- (void)viewDidLoad{
    [super viewDidLoad];

    [scroll setScrollEnabled:YES];
    [scroll setContentSize:CGSizeMake(923, 934)];
    [self.view addSubview:scroll];
}

【问题讨论】:

  • 把这个写在 -(void)viewDidAppear:(BOOL)animated 方法 [scrollView setContentOffset:CGPointMake(0,0) animated:YES];
  • 当我这样做时,uiscrollview 会移到顶部,但一切仍然向上移动(内容的顶部仍然不在视图中)。
  • 刚注意到这会让其他人感到困惑,所以我添加了新的班次图片
  • 只是为了确认:iOS 6?如果您在viewDidAppear: 中记录表视图的contentInsetcontentOffset,那么这是否提供了任何线索?滚动条似乎确认视图的框架没有发生任何奇怪的事情。

标签: ios objective-c uiscrollview


【解决方案1】:

我解决了问题

-(void)viewWillAppear:(BOOL)animated{

     [scroll setContentOffset:CGPointMake(0,0)];

}

【讨论】:

    【解决方案2】:

    我认为这是因为创建视图时自动布局的完成方式。出于某种原因,当您第一次向屏幕添加视图(滚动视图)时,视图的坐标不包含在导航栏下方,但在添加另一个视图后,它们会包含。我解决此问题的一种方法是创建一个空白视图并将其添加为子视图,然后再添加滚动视图。

    如:

    UIView *vi = [[UIView alloc] initWithFrame:CGRectMake(-10, -10, 1, 1)]
    [vi setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:vi];
    //Then add scrollView
    

    这只是创建了一个屏幕外的 1x1 清晰视图并将其添加到主视图中,这使得主视图在添加滚动视图之前正确定位自身。

    您可能还想更改滚动视图的 y 坐标,因为使用当前代码执行此操作将使其始终像第二种情况一样。

    我通常这样做:

    frame.y+=self.navigationController.navigationBar.frame.size.height + 20;
    

    添加导航栏高度和状态栏高度(20)。

    【讨论】:

    • 当我做 scroll.frame.origin.y +=self.navigationController.navigationBar.frame.size.height + 20;它给了我一个“表达式不可分配”的错误
    • 您不必这样做,但是当您创建滚动视图时,将该数字添加到 y 本来的值中。
    • 但是当它加载时,这不是将整个东西向下移动 20 吗?在我向下滚动然后推送一个新的视图控制器后,我只有这个移动问题。最初,滚动视图总是加载正常,但只有在向下滚动、推送视图然后返回之后,整个事情才会发生变化
    • 这就是您首先添加空白视图的原因。它使它的行为与您从另一个视图返回时的行为更加相似。
    • 这样做似乎无法解决问题
    【解决方案3】:

    起初我使用了您的答案)但一段时间后我找到了解决此问题的解决方案,而无需每次将内容滚动到顶部。希望它对你有用)

    https://stackoverflow.com/a/22699785/246598

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2013-11-14
      相关资源
      最近更新 更多