Xcode UIScrollView 布局 - 设置水平内容大小并水平调整子视图大小
Posted
技术标签:
【中文标题】Xcode UIScrollView 布局 - 设置水平内容大小并水平调整子视图大小【英文标题】:Xcode UIScrollView layout - set horizontal content size and resize subviews horizontally 【发布时间】:2015-02-02 17:16:46 【问题描述】:我有一个滚动视图,它占据了整个屏幕的视图。在这个滚动视图中,有几个垂直堆叠的文本字段。由于这些文本字段太多,我使用的是滚动视图,因此用户可以向下滚动。我正在使用 Xcode 的 Preview,因此我可以将视图设置为在许多设备上工作。我遇到的问题是我希望这些文本字段改变水平大小以适应,所以没有水平滚动;但是我永远无法让他们改变大小。相反,滚动视图只是让我水平滚动。
我在 Xcode 的界面构建器(滚动视图和文本字段)中进行了设置,并让 Xcode 应用了所有建议的约束。然后,我为这些文本字段中的每一个设置了一个约束,将它们的右边缘设置为距滚动视图一定距离(我无法设置与实际视图的距离,因为滚动视图是超级视图)。这些约束不与任何现有约束发生冲突。 Xcode 建议的约束没有为这些文本字段设置宽度。
然后在viewDidLoad:
方法中:[scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, scrollView.contentSize.height)];
这是为了强制滚动视图使用超级视图的水平宽度。
对于我的问题含糊不清,我深表歉意。 基本上,我需要一种方法让滚动视图中的文本字段水平调整大小以适应屏幕。
【问题讨论】:
【参考方案1】:您说您为与滚动视图相关的文本字段应用了“边缘”约束。
您应该将它们添加到与它们的超级视图相关的位置,即滚动视图的内容视图。
在处理自动布局和滚动视图时,请尝试将所有子视图视为尝试以明确的方式定义内容视图的框架,以便滚动视图可以正确“调整大小”。
Apple 已针对此类问题设置了技术说明。
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
【讨论】:
如何将约束应用到内容视图? 您是否在 IB 中使用自动布局? 是的。现在,我改变了它,所以我在滚动视图中有一个视图来保存我的项目。我越来越近了,但仍然有麻烦。谢谢。【参考方案2】:我正在使用 AutoLayout,但在滚动视图仍然水平滚动时遇到了问题,该滚动视图比屏幕宽度略窄。
这是我的解决方法:
-(void)viewDidLayoutSubviews
[super viewDidLayoutSubviews];
[self.scroller setContentSize:CGSizeMake(MIN([[UIScreen mainScreen] bounds].size.width, self.scroller.frame.size.width), scroller.contentSize.height)];
【讨论】:
以上是关于Xcode UIScrollView 布局 - 设置水平内容大小并水平调整子视图大小的主要内容,如果未能解决你的问题,请参考以下文章
带有空 UIScrollView 的可滚动内容大小歧义(XCode 6)