5

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

在此处输入图像描述 在此处输入图像描述

这是滚动视图的代码

- (void)viewDidLoad{
    [super viewDidLoad];

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

3 回答 3

4

我解决了问题

-(void)viewWillAppear:(BOOL)animated{

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

}
于 2013-08-09T08:21:48.850 回答
3

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

如:

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)。

于 2013-08-08T22:36:07.830 回答
1

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

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

于 2014-03-27T21:46:13.167 回答