如何在UILabel上绘制边框?
你可以通过它的底层CALayer的属性设置标签的边框:
#import <QuartzCore/QuartzCore.h>
myLabel.layer.borderColor = [UIColor greenColor].CGColor;
myLabel.layer.borderWidth = 3.0;
您可以使用此回购:GSBorderLabel
这是很简单的:
GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
andBorderColor:anotherColor
andBorderWidth:2];
这涉及到文本中实际字符的边框,问题在于围绕矩形文本所包含的边框。 – jjxtra 2013-03-26 15:11:28
这真的取决于有多少寄宿生在你的视图中使用,有时候,只需添加一个大小稍大的UIVIEW来创建边界。该方法比产生视图
斯威夫特版本快:
myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.greenColor().CGColor
对于斯威夫特3:
myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor
它将是'myLabel.layer.borderColor = UIColor.blackColor()。CGColor!' – Shruti 2015-03-24 07:40:26
谢谢,编辑答案 – Esqarrouth 2015-03-24 08:15:05
这里有一些事情你可以UILabel
及其边界做。
下面是这些标签的代码:
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
}
}
注意,在斯威夫特没有必要进口QuartzCore
。
也
斯威夫特3/4与@IBDesignable
虽然几乎所有的上述解决方案的工作很好,但我会建议一个@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
}
}
}
编译器抱怨CALayer中没有borderColor和borderWidth的定义。 – Boon 2010-02-22 15:15:07
它们只能从SDK 3.0开始使用:(如果你只想快速解决调试问题,你可以为你的标签设置半透明的彩色背景 – Vladimir 2010-02-22 15:22:04
如果编译器抱怨,那么你可能忘了'#import' –
2010-02-22 15:37:58