2013-11-15 38 views
0

我有一个UIScrollView,里面有一个UIView。我在故事板编辑器中将这个UIScrollView定位在屏幕的中间位置。默认情况下,它会显示在应该出现的位置,但在运行我的应用程序时不会响应用户交互。如果我取消选中故事板的自动布局,交互就可以工作,但视图会自动移动到屏幕的顶部。或者,我可以离开自动版式检查,并在我viewDidLoad中插入下面的代码:UIScrollView框架被自动移动

scrollView.translatesAutoresizingMaskIntoConstraints = NO; 
noteContainer.translatesAutoresizingMaskIntoConstraints = NO; 

NSDictionary *viewsDictionary; 
viewsDictionary = NSDictionaryOfVariableBindings(scrollView, noteContainer); 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]]; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]]; 
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[noteContainer]|" options:0 metrics: 0 views:viewsDictionary]]; 
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[noteContainer]|" options:0 metrics: 0 views:viewsDictionary]]; 

在这种情况下,滚动视图响应的互动,但同样会自动移动到屏幕的顶部。可笑的沮丧。

回答

1

解决方法是将scrollview放置在通用UIView内,该UIView位于您想要的位置。

1

它转到屏幕的顶部(并且是屏幕的大小),因为这是你告诉它你的限制做的事:

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]]; 

该约束说使滚动视图有0距离到屏幕的顶部和底部。如果你想要的话,说从顶部150点,并一路走下到底部,你应该有这样的:

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-150-[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];