在包含较小 UIView 和对象的 ViewController 中以编程方式添加 UIScrollView

Add UIScrollView programmatically in a ViewController that contains a smaller UIView with objects

提问人:stefanosn 提问时间:4/10/2022 更新时间:4/10/2022 访问量:45

问:

我有一个UIViewcontroller。我在这个UIVIewController中有一个较小的UIVIew。现在,我正在尝试以编程方式添加一个UIScrollView,该UIScrollView应包含较小的UIView,以便我可以上下滚动较小的视图。较小的 UIView 已使用 xcode 的界面构建器创建。所以现在我使用下面的代码来添加 scrollView,然后在 scrollView 中添加较小的 View。scrollView 的宽度大小应与较小的 View 相同。

self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(self.smallerView.frame.origin.x, self.smallerView.frame.origin.y, self.smallerView.frame.size.width, self.smallerView.frame.size.height)];

[self.scrollView setContentSize:CGSizeMake(self.smallerView.bounds.size.width, self.smallerView.bounds.size.height*1.2)];
[self.scrollView addSubview:self.smallerView];
    
[self.view addSubview:self.scrollView];

奇怪的是,较小的 UIView 中包含的对象不在 UIScrollView 的边界内。我错过了什么?是否必须以编程方式为较小的 UIView 添加约束?任何帮助都表示赞赏。

iOS Objective-C UIscrollView

评论

1赞 Dmitry A. 4/10/2022
您是否对主视图使用自动布局?默认情况下,它通常处于打开状态。如果您添加 >scrollView.translatesAutoresizingMaskIntoConstraints = FALSE,也许会有所帮助;在 [self.view addSubview:self.smallerView] 之前;
1赞 DonMag 4/10/2022
快速测试...在 Storyboard / Interface Builder 中添加了一个带有 3 个标签的视图作为子视图...约束设置正确...您发布的代码工作正常。你真的需要提供你正在做的事情以及到底发生了什么的完整细节。“较小的 UIView 中包含的对象不在 UIScrollView 的边界内”...那是什么意思?这些对象实际上是 的子视图吗?还是它们只是重叠?您为其子视图设置了哪些约束?smallerViewsmallerView
0赞 stefanosn 4/11/2022
感谢您的回答,我会尝试您的建议!
1赞 Ptit Xav 4/11/2022
您是否检查了小视图在滚动视图中的位置是否正确。这可能是您看到的原因:物体在小视图中定位良好,但小视图位置不佳,这导致物体在小视图中似乎位置不佳。

答: 暂无答案