Xcode UIScrollView布局 - 设置水平内容大小并水平调整子视图大小

时间:2015-02-02 17:16:46

标签: ios objective-c xcode uiscrollview autolayout

我有一个滚动视图,占据视图的整个屏幕。在此滚动视图中,有几个垂直堆叠的文本字段。由于这些文本字段太多,我使用滚动视图,因此用户可以向下滚动。我正在使用Xcode的预览,因此我可以将视图设置为可在许多设备上运行。我的问题是我希望这些文本字段改变水平尺寸以适应,所以没有水平滚动;但我永远不能让他们改变大小。相反,滚动视图只允许我水平滚动。

我在Xcode的界面构建器(滚动视图和文本字段)中进行了设置,并让Xcode应用了所有建议的约束。然后,我为每个文本字段设置了一个约束,将它们的右边缘设置为远离滚动视图的设定距离(我无法设置与实际视图的距离,因为滚动视图是超视图)。这些限制与任何现有约束都没有冲突。 Xcode建议的约束条件没有为任何这些文本字段设置宽度。

然后使用viewDidLoad:方法:[scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, scrollView.contentSize.height)];

这是为了强制滚动视图使用超视图的水平宽度。

我很抱歉我的问题模糊不清。 基本上,我需要一种方法让滚动视图中的文本字段水平调整大小以适应屏幕。

2 个答案:

答案 0 :(得分:1)

你说你应用" edge"与滚动视图相关的文本字段的约束。

您应该根据他们的超级视图添加它们,即滚动视图的内容视图。

在处理自动布局和滚动视图时,请尝试将所有子视图视为尝试以明确的方式定义内容视图的框架,以便滚动视图可以“调整大小”。正常。

Apple针对此类问题制定了技术说明。

https://developer.apple.com/library/ios/technotes/tn2154/_index.html

答案 1 :(得分:0)

我正在使用AutoLayout,但滚动视图仍然水平滚动,比屏幕宽度略窄。

这是我的修复:

-(void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [self.scroller setContentSize:CGSizeMake(MIN([[UIScreen mainScreen] bounds].size.width, self.scroller.frame.size.width), scroller.contentSize.height)];
}