等宽约束+中心水平约束不起作用

时间:2017-11-28 13:25:42

标签: ios xcode storyboard interface-builder nslayoutconstraint

我只是在Interface Builder中发现了一个与Storyboard有关的奇怪行为。

如果我设置UIView:
•超视图的等宽,乘数1
•水平居中于超级视图,乘数 x

然后我希望宽度始终是相同的值但是没有,我有2个行为:
•x> = 1 =>宽度与超视图的预期值相同 •x< 1 =>宽度比superview大0.5像素

我错过了什么吗?

以下是故事板的摘录,其中包含两个案例

  <subviews>
      <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CtB-in-rfQ">
          <rect key="frame" x="0.0" y="20" width="375" height="267"/>
          <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
      </view>
      <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N87-No-JIr">
          <rect key="frame" x="-94" y="400" width="375.5" height="267"/>
          <color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
      </view>
  </subviews>

修改 enter image description here 如您所见,深灰色视图的宽度等于superview + center X等于0.5 x superview的中心X. 的 BUT
深灰色视图的宽度为375.5像素。 x位置应为-93.75像素,向左舍入0.25像素。所以我猜仍然有视图居中到187.5像素,界面构建器在右边增加另外0.25像素,大0.5像素的末端。

我期望的是当我改变中心X约束的乘数时,框架更重要并且没有改变。 (这对我来说与宽度无关)。

1 个答案:

答案 0 :(得分:0)

通过看到约束,我可以看到它们是模棱两可的。子视图仍然需要X和Y约束才能正确显示。

你究竟想要实现什么目标?让我知道。请查看附带的屏幕截图。让我知道你想要达到的目标。

纠正一个: 1.使宽度为0.5或任何您想要的宽度 2.使其具有安全视图的中心水平 3.设置相应的Y约束。

enter image description here