0

好的,所以我是 Swift 编程语言和 IOS 平台的新手,但是我在其他平台(如 Android/WP/Xamarin)上的移动开发方面有很强的背景,所以我决定从 Auto Layout 开始深入学习布局系统。

在这里,我试图通过PureLayout使用 Auto Layout API 将视图水平居中并将其与屏幕底部对齐。当我将视图设置为与其超级视图的水平轴对齐时,这是我得到的结果。

代码

override func updateViewConstraints() {
    if(!didSetupConstraints)
    {

        blackView.autoPinToBottomLayoutGuideOfViewController(self, withInset: 10)
        blackView.autoSetDimensionsToSize(CGSize(width:50,height: 50))
        blackView.autoAlignAxisToSuperviewAxis(.Horizontal)


        didSetupConstraints=true
    }

    super.updateViewConstraints()
   }

结果

在此处输入图像描述

但是,当我将视图设置为与垂直轴对齐时,我得到了所需的最终结果

代码

override func updateViewConstraints() {
    if(!didSetupConstraints)
    {

        blackView.autoPinToBottomLayoutGuideOfViewController(self, withInset: 10)
        blackView.autoSetDimensionsToSize(CGSize(width:50,height: 50))
        blackView.autoAlignAxisToSuperviewAxis(.Vertical)


        didSetupConstraints=true
    }

    super.updateViewConstraints()
   }

结果

在此处输入图像描述

即使我得到了我想要的结果,如果没有正确理解为什么它通过将视图设置为与它的超级视图的垂直轴对齐来水平对齐,我对继续进行感觉并不好。所以有人可以向我解释对齐轴的整个概念以及它们在自动布局中的工作方式。提前致谢。

4

1 回答 1

1

水平居中和垂直轴对齐是一回事。

垂直轴是在视图左右边缘之间居中的假想垂直线。因此,如果视图与其对齐,则视图将位于该垂直线的任何位置,从而导致视图水平进入。

Pure Layout 的源代码也有一个定义,并显示了它们如何映射到常规自动布局(如果有帮助的话)。

/** A vertical line equidistant from the view's left and right edges. */
ALAxisVertical = NSLayoutAttributeCenterX,
/** A horizontal line equidistant from the view's top and bottom edges. */
ALAxisHorizontal = NSLayoutAttributeCenterY,
于 2016-02-24T18:43:29.907 回答