在自动布局超级视图中手动布局视图

Manually laid out view in auto layout super view

我有一些与混合自动布局和手动布局相关的不那么普通的问题。

  1. view1 - 使用自动布局的超级视图
  2. view2 - 使用手动布局的子视图

view1的高度取决于子视图的总高度。

我为 view2 设置了 translatesAutoresizingMaskIntoConstraints = NOframe 并将其作为子视图添加到 view1view2 的结果高度为 0(在 layoutSubviews 中)

因此,view1 的自动布局在确定自身高度时不会注意view2 的 高度。然后将这个 0 高度传播到 view2.

需要建议。我不确定这是否合法。

在自动布局世界中,视图应该有明确的约束集。因此,要将使用手动布局创建的视图嵌入到使用自动布局创建的视图中,您或 iOS 系统必须为子视图提供相应的约束集。

换句话说:

  • 设置translatesAutoresizingMaskIntoConstraints = YES,像往常一样配置frameautoresizingMask。但是要注意超级视图已经具有的约束与操作系统在将自动调整大小掩码转换为约束(在运行时)期间将创建的约束之间可能存在的冲突。

  • 设置translatesAutoresizingMaskIntoConstraints = NO,自行添加约束。

嗯,没什么新鲜事。但我不得不花一些时间在脑海里想出来,希望它能节省你的时间!