我有一个滚动视图,占据视图的整个屏幕。在此滚动视图中,有几个垂直堆叠的文本字段。由于这些文本字段太多,我使用滚动视图,因此用户可以向下滚动。我正在使用Xcode的预览,因此我可以将视图设置为可在许多设备上运行。我的问题是我希望这些文本字段改变水平尺寸以适应,所以没有水平滚动;但我永远不能让他们改变大小。相反,滚动视图只允许我水平滚动。
我在Xcode的界面构建器(滚动视图和文本字段)中进行了设置,并让Xcode应用了所有建议的约束。然后,我为每个文本字段设置了一个约束,将它们的右边缘设置为远离滚动视图的设定距离(我无法设置与实际视图的距离,因为滚动视图是超视图)。这些限制与任何现有约束都没有冲突。 Xcode建议的约束条件没有为任何这些文本字段设置宽度。
然后使用viewDidLoad:
方法:[scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, scrollView.contentSize.height)];
这是为了强制滚动视图使用超视图的水平宽度。
我很抱歉我的问题模糊不清。 基本上,我需要一种方法让滚动视图中的文本字段水平调整大小以适应屏幕。
答案 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)];
}