Ios 正在自动移动的UIScrollView框架

Ios 正在自动移动的UIScrollView框架,ios,uiview,uiscrollview,autolayout,Ios,Uiview,Uiscrollview,Autolayout,我有一个UIScrollView,里面有一个UIView。我在storyboard editor中将这个UIScrollView放置在屏幕的中间位置。默认情况下,它出现在应该出现的位置,但在我运行应用程序时不会响应用户交互。如果我取消选中故事板的“自动布局”,则交互可以工作,但视图会自动移动到屏幕顶部。或者,我可以保持自动布局处于选中状态,并在viewDidLoad中插入以下代码: scrollView.translatesAutoresizingMaskIntoConstraints = NO

我有一个UIScrollView,里面有一个UIView。我在storyboard editor中将这个UIScrollView放置在屏幕的中间位置。默认情况下,它出现在应该出现的位置,但在我运行应用程序时不会响应用户交互。如果我取消选中故事板的“自动布局”,则交互可以工作,但视图会自动移动到屏幕顶部。或者,我可以保持自动布局处于选中状态,并在viewDidLoad中插入以下代码:

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]];

在这种情况下,滚动视图响应交互,但再次自动移动到屏幕顶部。可笑的令人沮丧。

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

它位于屏幕顶部(是屏幕的大小),因为这是您在约束条件下告诉它的:

[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]];