我在uiscrollview上找出这个问题很困难。单击按钮将新视图控制器推入屏幕后,我的uiscrollview中的内容会向上移动,然后返回到原始视图控制器。注意滚动视图的顶部是如何变化的。
以下是scrollView的代码
- (void)viewDidLoad{
[super viewDidLoad];
[scroll setScrollEnabled:YES];
[scroll setContentSize:CGSizeMake(923, 934)];
[self.view addSubview:scroll];
}
答案 0 :(得分:4)
我解决了问题
-(void)viewWillAppear:(BOOL)animated{
[scroll setContentOffset:CGPointMake(0,0)];
}
答案 1 :(得分:3)
我认为这是因为创建视图时autoLayout的完成方式。出于某种原因,当您首次向屏幕添加视图(滚动视图)时,视图的坐标不包括在导航栏下,但在添加另一个视图后,它们会执行。我解决这个问题的一种方法是在添加scrollView之前创建一个空白视图并将其添加为子视图。
如:
UIView *vi = [[UIView alloc] initWithFrame:CGRectMake(-10, -10, 1, 1)]
[vi setBackgroundColor:[UIColor clearColor]];
[self.view addSubview:vi];
//Then add scrollView
这只是创建一个离屏1x1清晰视图并将其添加到主视图中,这使得主视图在添加scrollView之前正确定位。
您也可能想要更改scrollView的y坐标,因为使用当前代码执行此操作将使其始终与第二种情况一样。
我通常会这样做:
frame.y+=self.navigationController.navigationBar.frame.size.height + 20;
添加导航栏高度和状态栏高度(20)。
答案 2 :(得分:1)
起初我使用了你的答案)但是过了一段时间我找到了解决方案如何解决这个问题,而不是每次都将内容滚动到顶部。希望它对你有用)