constraintsWithVisualFormat无法正常工作?

时间:2015-05-30 06:13:48

标签: ios autolayout visual-format-language

我添加了类似的约束,但无法获得正确的视图框架。

   [self addSubview:self.scrollView];
[self.scrollView addSubview:self.contectView];

NSDictionary *views = @{@"scrollView" : self.scrollView , @"contectView" : self.contectView };

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics:0 views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView(==64)]" options:0 metrics:0 views:views]];
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contectView]|" options:0 metrics:0 views:views]];
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[contectView]|" options:0 metrics:0 views:views]];
[self layoutIfNeeded];
NSLog(@"%@",self.scrollView);
NSLog(@"%@",self.contectView);

控制台O / p

 <UIScrollView: 0x78fd47a0; frame = (0 0; 0 64); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x78faced0>; layer = <CALayer: 0x78facea0>; contentOffset: {0, 0}; contentSize: {0, 0}>

<UIView: 0x78fae7d0; frame = (0 0; 0 0); layer = <CALayer: 0x78fad970>>

我是方面的contectView框架高度也是64.但它返回0

1 个答案:

答案 0 :(得分:1)

在UIScrollView中,autolayout以不同的方式工作。如果您考虑一下,您在约束方面所写的内容就像要求您的内容视图适合内容视图,但我们想要相反的方式。
现在您有两个选择: - 为滚动视图提供contentSize - 确保我们的内容视图的内部内容大小大于滚动视图框架。您可以通过修改内容视图的大小,或者通过向内容视图提供一组保证内在内容大小的子视图来实现。

更多信息here