嵌套视图中的拥抱和压缩阻力
我试图了解如何拥抱和抗压力真的工作。
我有这种情况下,我需要两个标签在左边(绿色容器内)和两个标签在右边(蓝色容器内)。
如图所示,我希望绿色容器拥抱内容(Android的wrap content
)和蓝色容器以填充剩余空间(Android的fill_parent
)。
我想我可以在绿色视图中添加拥抱/压缩优先级,例如:
greenView.setContentHuggingPriority( UILayoutPriorityDefaultHigh, forAxis: .Horizontal) greenView.setContentCompressionResistancePriority( UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
但它似乎没有按预期工作。 我必须将这些约束应用于(红色和黄色)标签。
任何人都知道原因?
一些想法(编辑):
从Ken的回答来看,你必须设置拥抱/压缩而不是容器视图的标签。
在这个问题的例子中,例如,我将设置一个750(高)和一个1000(必需)的阻力在左边的标签。 由于标签默认值为251(低+1),电阻值为750(高),因此左侧(750> 251和1000> 750)的标签的拥抱和压缩将更大。 与此同时,压缩会比标签(1000> 750)内的拥抱更大。
这样,左边的标签会试图拥抱他们的内容,但不会压缩它的内容。 例如,红色标签不能完全包装其内容,因为黄色标签不想压缩。
唷!
内容拥抱和压缩阻力优先级只与视图的内在内容大小有关。 基本上,如果一个视图具有内在的内容宽度,那么自动布局系统将它视为受到以下约束:
[view(<=intrinsicWidth@contentHuggingPriority)] [view(>=intrinsicWidth@compressionResistancePriority)]
这就是这些意思。 当然,这也适用于固有高度。
用作容器的普通UIView
没有固有的大小。 所以,它的内容拥抱和压缩阻力的优先级是没有意义的。
- UITableViewCell四舍五入错误与NSAutoresizingMaskLayoutConstraint,但大小正确设置在故事板和heightForRowAtIndexPath:
- 我怎样才能使用Autolay编程在一个现有的UIView的顶部的UIView?
- 当方向改变时重新定位控制
- 更改UIImageView大小以使图像与AutoLayout匹配
- 在iOS中使用自动布局在邻居之间居中查看
- 具有多个tableviews的iOS 6 AutoLayout全部dynamic高度
- 在使用自动布局dynamic添加子视图的同时调整超级视图的大小
- iPhone 6和iPhone 6将如何为iPhone 4和iPhone 5构build应用程序
- iOS:自动布局:当有足够的空间时,并排放置两个button,否则会一个一个放在另一个上面