在按钮中更改属性标题的位置

时间:2016-08-09 13:56:51

标签: swift button uibutton interface-builder

button

如您所见,我希望标题位于图像下方,并且两者都水平居中。小心,它们是按钮的组成部分。我尝试更改界面构建器上的插入值,但它没有与其他屏幕一起工作(我使用自动布局),它搞砸了。

enter image description here

我是否可以使用IB或必须使用"硬代码"

2 个答案:

答案 0 :(得分:1)

在界面构建器中它很简单,只需添加一个按钮就可以将其更改为自定义类似下方的图像以及标题为设置

enter image description here

并设置按钮的图像,我将其设置为settingsButton.png

enter image description here

现在你需要设置对齐,例如,

enter image description here

现在你可以为图像和标题设置昆虫,为图像设置昆虫你选择edge image如下图所示,并调整昆虫

enter image description here

并且对于标题,现在为edge选择title并调整昆虫,如下图所示,

enter image description here

现在您的按钮看起来如下所示

enter image description here

希望这有助于你:)

答案 1 :(得分:0)

尝试将CAShapeLayer添加到按钮: -

1。)定义一个UIBezierPathrect :框架与按钮

相同

2.。)定义CAShapeLayer,其中包含bezierPath

的路径

3。)通过添加CATextLayerhttps://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CATextLayer_class/

将文字“B”添加到按钮的中心

4。)将shapeLayer和textLayer作为subLayer添加到按钮层,在这种情况下为这些图层添加相应的zPosition -1

5.)设置第一层的不透明度(alpha),即Button。

以下是它的代码: -

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var btn: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    setupButton()

}

func setupButton(){

    print(btn.bounds)
    print(btn.frame)

    let bezPath : UIBezierPath = UIBezierPath(rect: btn.bounds)
    let lyr : CAShapeLayer = CAShapeLayer()
    let txtLyr : CATextLayer = CATextLayer()
    lyr.path = bezPath.CGPath
    lyr.fillColor = UIColor.blueColor().CGColor
    lyr.zPosition = -1
    lyr.opacity = 0.5
    txtLyr.string = "B"
    //        txtLyr.font = 
    txtLyr.fontSize = 38.0
    txtLyr.zPosition = -1
    txtLyr.frame = btn.bounds
    print(txtLyr.frame)
    txtLyr.alignmentMode = kCAAlignmentCenter
    btn.layer.addSublayer(lyr)
    btn.layer.addSublayer(txtLyr)
}


@IBAction func btnAction(sender: UIButton) {

     print("Button is pressed!")

  }
}

这是输出: - Simulator Screen

PS:1。)在您的情况下,只需要CATextLayer ......

2。)你在按钮中看到的红色圆圈是一个图像。

我希望这会有所帮助