AutoLayout Size Classes - different proportional h

2019-04-11 21:11发布

问题:

I need to set the height of a subview to be proportional to its parent. On iPads, I need it to be one third of the height while on iPhones I need it to be one half. In the "AnyAny" size class, I create the constraint and set the multiplier to 0.3333333. This does what it should on iPads. When I change the size class to "CompactRegular", I change the multiplier of the constraint to 0.5. Although this makes it half on iPhones, it also does it for iPads. How do I make it such that the size classes would have different multipliers?

回答1:

You'll need to add a new constraint for Compact/Regular, and make sure the original one is only installed in Any/Any like so:

  • In Any/Any, add the original constraint (subview.height = superview.height * 0.33).
  • Switch to Compact/Regular, and select the previously added constraint.
  • In the size inspector, next to "installed", click the '+' button, and select Compact/Regular. Now You can disable "installed" in Compact/Regular (see pic).
  • Add the new constraint (subview.height = superview.height * 0.5), and make sure it's only installed in Compact/Regular mode.