如何在按钮的文本上添加边框?

时间:2019-06-21 05:35:52

标签: swift text uibutton border

我有一个带有一些文本的按钮,我需要为此添加边框0.2像素,我使用了@IBDesignable,但它适用于按钮而非文本。

我的代码:

@IBInspectable var borderWidth: CGFloat = 1.0{
        didSet{
            layer.borderWidth = borderWidth
        }
    }
    @IBInspectable var borderTextColor:UIColor?{
        didSet{
            layer.borderColor = borderTextColor?.cgColor
        }
    }

3 个答案:

答案 0 :(得分:0)

您只需为按钮提供ID并使用像这样的普通CSS-

#myButton{text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;}

这只会在文本上产生阴影,如轮廓。根据需要管理颜色。

答案 1 :(得分:0)

您正在为UIButton而非UILabel添加边框。将UILabel用于文本而不是UIButton文本,然后像这样将边框分配给UILabel

    yourLabel.layer.borderColor = UIColor.black.cgColor
    yourLabel.layer.borderWidth = 2
    yourLabel.layer.cornerRadius = 5

答案 2 :(得分:0)

如果要在文本本身上添加边框,则可以使用属性字符串在文本中添加笔触。您可以对UIKit中大多数与文本相关的UI元素执行此操作,例如UILabelUIButton

// Create the stroke attributes
let attributes: [NSAttributedString.Key: Any] = [
    NSAttributedString.Key.strokeColor: UIColor.black,
    NSAttributedString.Key.foregroundColor: UIColor.white,
    NSAttributedString.Key.strokeWidth: -4.0
];

// Create the text with a stroke as an attributed string
let textWithStroke = NSAttributedString(
    string: "Button Text",
    attributes: attributes
);

// Set the attributed string to the button
button.setAttributedTitle(textWithStroke, for: .normal);

.strokeWidth使用负值,以便笔划勾勒出文本的外部轮廓,而不是内部轮廓

如果要编辑字体,只需将NSAttributedString.Key.font值的UIFont键添加到attributes数组中