我试图生成代码视图。 这是我的看法对象的层次结构
- UIScrollView中
- 的UIView
- 的UIButton
- 的UIView
滚动视图应该是大小的窗口相同。 该按钮应尽可能地大。 我使用的是iOS自动布局,所以我所有的对象的约束字符串这个样子
H:|[object]|
V:|[object]|
我还设置translatesAutoresizingMaskIntoConstraints
到NO
为每个对象。
问题是,该按钮只得到了默认的按钮大小。 其父视图对象(UIView的)只得到大小子视图需要。
红色:UIScrollView中/黄色:的UIView
我怎样才能迫使这些观点是一样大的滚动视图?
当我使用一个UIView,而不是日的UIScrollView的一切都很正常......
下面是一些代码:
- (void) viewDidLoad {
[super viewDidLoad];
// SCROLL VIEW
UIScrollView* scrollView = [UIScrollView new];
scrollView.backgroundColor=[UIColor redColor];
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
//CONTAINER VIEW
UIView *containerView = [UIView new];
containerView.translatesAutoresizingMaskIntoConstraints = NO;
containerView.backgroundColor = [UIColor yellowColor];
[scrollView addSubview:containerView];
// CONSTRAINTS SCROLL VIEW - CONTAINER VIEW
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
// BUTTON
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.translatesAutoresizingMaskIntoConstraints = NO;
[button setTitle:@"I'm way to small" forState:UIControlStateNormal];
[containerView addSubview:button];
// CONSTRAINTS CONTAINER VIEW - BUTTON
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
self.view = scrollView;
}
更新:我真的不知道,为什么发生这种情况。 如果您在IB建立视图,连接插座和实例化代码视图,滚动视图的行为像一个普通视图(垂直地反弹)。 它的contentSize计算不正确。 更多在这里 。 但如何正确地做到这一点?