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
How to draw border around a UILabel?
提问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 UILabel
and its borders.
这里有一些你可以做的事情UILabel
及其边界。
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 @IBDesignable
custom 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 即可创建边框。该方法比产生视图更快