在单元格中,如何定位和调整使用自动布局从笔尖创建的视图?

时间:2015-09-27 03:20:23

标签: ios uitableview cocoa-touch uiview autolayout

我有一个UITableViewCell子类,我选择在其layoutSubviews方法中设置所有定位。我有一个特殊的视图我已创建(本质上是一个带有UILabel的视图)作为此单元格的子视图,我想在layoutSubviews中正确定位它,但我无法想象如何。

每个其他视图我都会手动计算它的位置,然后调用setFrame。这个看起来很奇怪的是我创建的这个特殊视图,它是用笔尖创建的,并使用自动布局进行布局。但是电池本身并没有使用自动布局,因此我不确定该怎么做。

约束条件下,带有标签的特殊视图的标签位于其所包含的每个视图大小的15pt处。

layoutSubviews中,我希望基本上保持这种逻辑完整地保护它,但要确保它在单元格内的位置和大小正确定位。所以基本上我想保持自动布局逻辑,使特殊视图中的标签保持原样,但允许我使用setFrame在单元格内定位和调整整个视图本身。基本上是一个从带有自动布局的笔尖创建的视图,用于选择不使用自动布局的单元格。

我试着基本上调用sizeThatFits:CGSizeZero来推断自动布局的大小,然后定位它,但它会返回一个荒谬的大尺寸,这是没有意义的。即使我返回一个手动大小,我也会得到约束冲突"控制台中的警告将忽略我在单元格中设置标签的一个或多个Auto Layout约束。

我该怎么做?我应该如何使视图的子视图尊重其自动布局系统,但允许我根据自己的喜好定位有凝聚力的视图?

1 个答案:

答案 0 :(得分:1)

您的特殊视图具有所有有效约束。它可以通过自动布局子视图确定其宽度和高度。

而不是sizeThatFits:CGSizeZero使用目标尺寸为- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSizeUILayoutFittingCompressedSize的{​​{1}}。

然后根据此返回的大小设置宽度和高度的框架,并根据您的喜好设置origin.x / .y。

如果您的标签是多线,请在获得适合尺寸之前设置其UILayoutFittingExpandedSize

编辑:测试和工作!