Xcode UIScrollView 布局 - 设置水平内容大小和水平调整子视图大小
Xcode UIScrollView layout - set horizontal content size and resize subviews horizontally
我有一个滚动视图,它占据了整个屏幕。在这个滚动视图中,有几个垂直堆叠的文本字段。由于这些文本字段太多,我使用滚动视图,以便用户可以向下滚动。我正在使用 Xcode 的预览,因此我可以将视图设置为在许多设备上工作。我遇到的问题是我希望这些文本字段更改水平大小以适合,因此没有水平滚动;但是我永远无法让它们改变尺寸。相反,滚动视图只是让我水平滚动。
我在 Xcode 的界面构建器(滚动视图和文本字段)中进行了设置,并让 Xcode 应用了所有建议的约束。然后,我为这些文本字段中的每一个设置了一个约束,将它们的右边缘设置为距滚动视图一定距离(我无法设置距实际视图的距离,因为滚动视图是父视图)。这些约束不与任何现有约束冲突。 Xcode 的建议约束没有为任何这些文本字段设置宽度。
然后在viewDidLoad:
方法中:[scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, scrollView.contentSize.height)];
这是为了强制滚动视图使用超级视图的水平宽度。
对于我的问题含糊不清,我深表歉意。 本质上,我需要一种方法让滚动视图中的文本字段水平调整大小以适应屏幕。
您说您对与滚动视图相关的文本字段应用了 "edge" 约束。
您应该根据它们的超级视图添加它们,即滚动视图的内容视图。
在处理自动布局和滚动视图时,尝试将所有子视图视为试图以明确的方式定义内容视图的框架,以便滚动视图可以 "resize" 正确。
Apple 已针对此类问题设置了技术说明。
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
我在使用 AutoLayout 时遇到了滚动视图仍然水平滚动的问题,它比屏幕宽度略窄。
这是我的修复:
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.scroller setContentSize:CGSizeMake(MIN([[UIScreen mainScreen] bounds].size.width, self.scroller.frame.size.width), scroller.contentSize.height)];
}
我有一个滚动视图,它占据了整个屏幕。在这个滚动视图中,有几个垂直堆叠的文本字段。由于这些文本字段太多,我使用滚动视图,以便用户可以向下滚动。我正在使用 Xcode 的预览,因此我可以将视图设置为在许多设备上工作。我遇到的问题是我希望这些文本字段更改水平大小以适合,因此没有水平滚动;但是我永远无法让它们改变尺寸。相反,滚动视图只是让我水平滚动。
我在 Xcode 的界面构建器(滚动视图和文本字段)中进行了设置,并让 Xcode 应用了所有建议的约束。然后,我为这些文本字段中的每一个设置了一个约束,将它们的右边缘设置为距滚动视图一定距离(我无法设置距实际视图的距离,因为滚动视图是父视图)。这些约束不与任何现有约束冲突。 Xcode 的建议约束没有为任何这些文本字段设置宽度。
然后在viewDidLoad:
方法中:[scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, scrollView.contentSize.height)];
这是为了强制滚动视图使用超级视图的水平宽度。
对于我的问题含糊不清,我深表歉意。 本质上,我需要一种方法让滚动视图中的文本字段水平调整大小以适应屏幕。
您说您对与滚动视图相关的文本字段应用了 "edge" 约束。
您应该根据它们的超级视图添加它们,即滚动视图的内容视图。
在处理自动布局和滚动视图时,尝试将所有子视图视为试图以明确的方式定义内容视图的框架,以便滚动视图可以 "resize" 正确。
Apple 已针对此类问题设置了技术说明。
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
我在使用 AutoLayout 时遇到了滚动视图仍然水平滚动的问题,它比屏幕宽度略窄。
这是我的修复:
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.scroller setContentSize:CGSizeMake(MIN([[UIScreen mainScreen] bounds].size.width, self.scroller.frame.size.width), scroller.contentSize.height)];
}