ios 如何在 UILabel 周围绘制边框?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2311591/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 16:57:08  来源:igfitidea点击:

How to draw border around a UILabel?

iosiphonecocoa-touchuikituilabel

提问by Boon

Is there a way for UILabel to draw a border around itself? This is useful for me to debug the text placement and to see the placement and how big the label actually is.

UILabel 有没有办法在自身周围绘制边框?这对我调试文本位置和查看位置以及标签实际有多大很有用。

回答by Vladimir

You can set label's border via its underlying CALayer property:

您可以通过其底层 CALayer 属性设置标签的边框:

#import <QuartzCore/QuartzCore.h>

myLabel.layer.borderColor = [UIColor greenColor].CGColor
myLabel.layer.borderWidth = 3.0

Swift 5:

斯威夫特 5:

myLabel.layer.borderColor = UIColor.darkGray.cgColor
myLabel.layer.borderWidth = 3.0

回答by Suragch

Here are some things you can do with UILabeland its borders.

这里有一些你可以做的事情UILabel及其边界。

enter image description here

在此处输入图片说明

Here is the code for those labels:

这是这些标签的代码:

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var label3: UILabel!
    @IBOutlet weak var label4: UILabel!
    @IBOutlet weak var label5: UILabel!
    @IBOutlet weak var label6: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        // label 1
        label1.layer.borderWidth = 1.0

        // label 2
        label2.layer.borderWidth = 5.0
        label2.layer.borderColor = UIColor.blue.cgColor

        // label 3
        label3.layer.borderWidth = 2.0
        label3.layer.cornerRadius = 8

        // label 4
        label4.backgroundColor = UIColor.cyan

        // label 5
        label5.backgroundColor = UIColor.red
        label5.layer.cornerRadius = 8
        label5.layer.masksToBounds = true

        // label 6
        label6.layer.borderWidth = 2.0
        label6.layer.cornerRadius = 8
        label6.backgroundColor = UIColor.yellow
        label6.layer.masksToBounds = true
    }
}

Note that in Swift there is no need to import QuartzCore.

请注意,在 Swift 中不需要导入QuartzCore.

See also

也可以看看

回答by Esqarrouth

Swift version:

迅捷版:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.greenColor().CGColor

For Swift 3:

对于 Swift 3:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor

回答by Vakas

Swift 3/4 with @IBDesignable

Swift 3/4 与 @IBDesignable



While almost all the above solutions work fine but I would suggest an @IBDesignablecustom class for this.

虽然几乎所有上述解决方案都可以正常工作,但我建议@IBDesignable为此使用自定义类。

@IBDesignable
class CustomLabel: UILabel {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
}

回答by JAA

You can use this repo: GSBorderLabel

你可以使用这个仓库GSBorderLabel

It's quite simple:

这很简单:

GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
                                                     andBorderColor:anotherColor
                                                     andBorderWidth:2];

回答by Sanjay Mali

UILabel properties borderColor,borderWidth,cornerRadius in Swift 4

Swift 4 中的 UILabel 属性 borderColor、borderWidth、cornerRadius

@IBOutlet weak var anyLabel: UILabel!
   override func viewDidLoad() {
        super.viewDidLoad()
        anyLabel.layer.borderColor = UIColor.black.cgColor
        anyLabel.layer.borderWidth = 2
        anyLabel.layer.cornerRadius = 5
        anyLabel.layer.masksToBounds = true
}

回答by Exitare

Solution for Swift 4:

Swift 4 的解决方案:

yourLabel.layer.borderColor = UIColor.green.cgColor

yourLabel.layer.borderColor = UIColor.green.cgColor

回答by Bueno

Using an NSAttributedString string for your labels attributedText is probably your best bet. Check out this example.

为标签使用 NSAttributedString 字符串可能是最好的选择。看看这个例子。

回答by chings228

it really depends on how many boarder use in your view , sometimes , just add a UIVIEW which the size is a bit bigger to create the border . the method is faster than produce a view

这实际上取决于您的视图中使用了多少个寄宿生,有时,只需添加一个大小稍大的 UIVIEW 即可创建边框。该方法比产生视图更快