如何将两个标签居中

时间:2016-08-01 21:21:30

标签: ios swift xcode autolayout constraints

我有两个按钮。我希望水平在同一条线上的两个按钮,我想要左侧按钮左侧,两个按钮之间和右侧按钮右侧的相等空间。

我想把这两个按钮居中:

enter image description here

4 个答案:

答案 0 :(得分:1)

如果我是你,我会以编程方式制作它们。如果它们包含在视图中,这将起作用。下面的代码假设您想要在viewController中居中按钮。

  

以编程方式制作UIButtons

在ViewDidLoad中:

        let myFirstXCoordinate = CGFloat((self.view.width / 4) - (myWidth / 2))
        let mySecondXCoordinate = CGFloat((3 * self.view.width) / 4) - (myWidth / 2))
        let myWidth:CGFloat = //your button's width
        let myHeight:CGFloat = //your button's height
        let myYCoordinate:CGFloat = //your Y Coordinate

        firstButton.setBackgroundImage(UIImage(named: "myRedOvalThingyImage"), forState: .Normal)
        firstButton.backgroundColor = UIColor.clearColor()
        firstButton.frame = CGRectMake(myFirstXCoordinate, myYCoordinate, myWidth, myHeight)
        firstButton.addTarget(self, action: #selector(ViewController.pressedFirst(_:)), forControlEvents: .TouchUpInside)
        buttonView.addSubview(firstButton)

        secondButton.setBackgroundImage(UIImage(named: "myRedOvalThingyImage"), forState: .Normal)
        secondButton.backgroundColor = UIColor.clearColor()
        secondButton.frame = CGRectMake(mySecondXCoordinate, myYCoordinate, myWidth, myHeight)
        secondButton.addTarget(self, action: #selector(ViewController.pressedSecond(_:)), forControlEvents: .TouchUpInside)
        buttonView.addSubview(secondButton)

在ViewDidLoad之外:

func pressedFirst(sender: UIButton!) {
print("First Oval Thingy Was Pressed")
}

func pressedSecond(sender: UIButton!) {
print("Second Oval Thingy Was Pressed")
}

答案 1 :(得分:0)

  

使用约束时,必须使用阻止。

在这种情况下,您应该有2个块,两个块的大小都相同,从0到中心,并以父级的宽度为中心。

示例:

Parent Width: 320

let widthBlock = 320/2

block 1: x = 0, width = widthBlock
block 2: x = widthBlock, width = widthBlock

然后在每个块中创建按钮,并使用约束垂直和水平居中。

当您使用界面时,它更简单,只需从按钮拖动即可阻止他的父亲Center Horizontal in ContainerCenter vertically in container

答案 2 :(得分:0)

您可以通过向左,中,右添加三个空间视图(UIvews)来实现自动布局。

  • 添加约束以将所有空间视图设置为等宽,并修复高度 (例如:30)。
  • 添加约束适合太空视图和按钮之间的空间为0,和 太空视图与晚餐视图为0。
  • 为所有空间视图和按钮添加约束到centerY。
  • 将约束添加到顶级超级视图。

完成视图后看起来像

enter image description here

答案 3 :(得分:0)

此问题最简单的方法之一是使用间隔视图。

enter image description here

两个红色按钮具有固定宽度,三个浅灰色间隔视图也具有相等的宽度。现在用邻居组件固定所有5个组件。

这里我采用了容器视图。如果你不需要它,你可以忽略它。

以下是不同屏幕的输出:

enter image description here

注意:由于空间限制,此处不包括5.5屏幕,但您也可以在5.5屏幕上查看,它会起作用。