0

我已经添加了这样的约束,但无法获得正确的视图框架。

   [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

4

1 回答 1

1

在 UIScrollView 中,自动布局以不同的方式工作。如果您考虑一下,您在约束方面所写的内容就像要求您的内容视图适合内容视图,但我们想要相反的方式。
现在您有两个选择: - 为滚动视图提供 contentSize - 确保我们的内容视图具有比滚动视图框架更大的固有内容大小。您可以通过固定内容视图的大小,或通过向内容视图提供一组保证固有内容大小的子视图来做到这一点。

更多信息在这里

于 2015-05-30T07:19:50.723 回答