我有UIScrollView
个UIView
作为子视图。 UIView
有一堆垂直排列的数据输入字段 - 基本上只是一个固定格式的数据输入表格。
我希望保持UIView's
垂直尺寸并调整其水平尺寸以匹配UIScrollView
的尺寸,后者会根据设备的方向而改变。请注意,这全部放在UISplitViewController
的详细信息视图中。
因此,用户必须垂直滚动而不是水平滚动,因为UIView
上的所有文本字段都应调整大小以适合水平放置在屏幕上。
目前,如果我通过更改框架宽度以匹配UIView
框架宽度来调整UIScrollView's
的大小,则UIView
子视图(文本字段)不会根据约束调整自身大小在IB中设置。 UIView
似乎被剪掉了。没有水平滚动,所以这方面工作正常。
我自动调整了UIView
和UIScrollView
上设置的子视图。
有关该怎么做的任何提示?如果设备方向发生变化,我还会在哪里放置代码来调整UIView
的大小?
其他信息。
我在IB中创建UIView
作为与包含DetailViewController
的{{1}}相同的NIB中的单独视图。因为它比UIScrollView
高得多,我在IB中创建它的唯一方法是将它设置为所需宽度和高度的单独视图。然后,我创建了一个IBOutlet,并将此视图作为子视图添加到UIScrollView
方法中的UIScrollView
。除了viewDidLoad
子视图未横向调整大小外,这一切似乎都可以找到所有正确显示的视图。
关于我在这里做错了什么的任何建议?
答案 0 :(得分:3)
由于您没有直接从xib将视图放在scrollview中,因此IB不提供选项来提供与superview有关的约束。您可能必须以编程方式添加约束。请参阅here。
修改强>
另请尝试在视图上使用以下内容(未尝试过,应根据documentation工作,但不确定自动布局):
self.view.autoresizesSubviews = YES;
或者,如果您根本不想使用自动布局,那么在尺寸检查器中将视图设置为展开(水平/垂直)的早期方法就可以。为此,您必须禁用自动布局。选择xib->文件检查器 - >取消选中自动布局复选框
答案 1 :(得分:3)
在发现更多之后确定我认为我找到了正确的方法来做我想做的事情,所以我想我应该留下一个关于此的说明。请记住,我正在尝试创建一个可滚动的窗体,它可以调整宽度,但不能调整其高度,因此用户只需向上和向下滚动即可访问字段。
现在为ViewController.h文件添加一个属性,并将其连接到您在上面5)中创建的contentView宽度约束。
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewWidth;
最后在ViewController中创建一个viewDidLayoutSubviews方法,并添加以下代码以将contentView宽度设置为与scrollView宽度相同。
- (void)viewDidLayoutSubviews
{
self.contentViewWidth.constant = self.scrollView.frame.size.width;
[self.view layoutSubviews];
}
如果事情没有正确调整大小,请检查所有约束是否正确设置。 IB似乎做了一些对我来说很奇怪的事情。但最后我让它看起来是最小编码。
只要将contentView中子视图的约束优先级设置为低于1,000,您也可以采用相同的方式垂直调整大小。如果您不希望它小于特定大小,请将大于或等于大小设置为高优先级。
如果有人能够弄清楚如何设置contentView,使其仅使用IB约束来调整其宽度以匹配scrollView,我很想知道如何。