0

我有一个 UIScrollView,里面有一个 UIView。我已将此 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]];

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

4

2 回答 2

1

解决方法是将滚动视图放在您想要的位置的通用 UIView 中。

于 2013-11-15T00:28:28.530 回答
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]];
于 2013-11-15T04:18:40.603 回答