ios - constraintsWithVisualFormat 无法正常工作?

标签 ios autolayout visual-format-language

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

   [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

最佳答案

在 UIScrollView 中,自动布局以不同的方式工作。如果你仔细想想你在约束方面写的东西就像要求你的内容 View 适合内容 View ,但我们想要相反的方式。
现在你有两个选择: - 为 ScrollView 提供一个 contentSize - 确保我们的内容 View 的内在内容大小大于 ScrollView 框架。您可以通过固定内容 View 的大小,或通过向内容 View 提供一组保证固有内容大小的 subview 来做到这一点。

更多信息 here

关于ios - constraintsWithVisualFormat 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542962/

相关文章:

ios - 为什么 UIView 在 iOS 中重新布局?

ios - 在视觉格式语言中给予 View 相同的位置

ios - 如何使用视觉格式约束让 subview 填充其 super View ?

ios - 在 Xcode 6 中更改文件夹位置时无法构建

iphone - 创建自定义 UIActivityIndi​​catorView

ios - 升级到 Xcode 7.2 后更改 watchOS 部署目标

ios 在最后一个索引之后插入更多表格单元格行

ios - UITextView 放置在自动布局中表现得很奇怪

xcode - iOS7 隐藏状态栏但不调整顶部布局指南