iOS UILabel swift3.0

iOS-UILabel-swift3-0

这里默认您已经能看懂swift2.0的语法,3.0对语法做了调整这里建议您查阅Swift 3.0 Released!,如有更完善3.0更改文档的请您邮件联系我,不胜感激!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

//初始化UILabel
var nameLabel:UILabel = UILabel(frame: CGRect(x:100, y:100, width:200, height:60))
//为了方便看到效果,设置红色背景色
nameLabel.backgroundColor=UIColor.red
//添加到视图中
self.view.addSubview(nameLabel)
//设置tag值
nameLabel.tag = 68
//通过tag值获取nameLabel
nameLabel = self.view.viewWithTag(68) as! UILabel
//设置显示文本
nameLabel.text = "swift大法好!"
//设置文本字体
nameLabel.font = UIFont.systemFont(ofSize: 18);//使用系统默认字体,默认14号字号
nameLabel.font = UIFont(name: "Helvetica-Bold", size: 18)//指定字体,指定字号
//设置背景色
nameLabel.backgroundColor = UIColor.red//系统色值
nameLabel.backgroundColor = UIColor(red: 125/255.0, green: 125/255.0, blue: 255/255.0, alpha: 1)//使用RGB来设置颜色,rgb范围0-1,所以255颜色值要除以255.0转换成0-1范围内
//设置文本颜色
nameLabel.textColor = UIColor.blue
//设置文本字体阴影延时
nameLabel.shadowColor = UIColor.yellow

//设置阴影方向和大小
//(0,-1):上阴隐
//(0,1):下阴隐
//(-1,0):左阴隐
//(1,0):右阴隐
nameLabel.shadowOffset = CGSize(width:1,height:1)

//设置文本字体对齐方式,对齐属性有以下几种,默认是左对齐
// Left : Visually left aligned
// Center : Visually centered
// Right : Visually right aligned
// Justified : Fully-justified. The last line in a paragraph is natural-aligned.
// Natural : Indicates the default alignment for script
nameLabel.textAlignment = .right

//设置换号模式,换行模式有以下几种,默认是ByWordWrapping
// ByWordWrapping /* What to do with long lines */ /* Wrap at word boundaries, default */
// ByCharWrapping /* Wrap at character boundaries */
// ByClipping /* Simply clip */
// ByTruncatingHead /* Truncate at head of line: "...wxyz" */
// ByTruncatingTail /* Truncate at tail of line: "abcd..." */
// ByTruncatingMiddle /* Truncate middle of line:  "ab...yz" */
//设置折行方式
nameLabel.lineBreakMode = .byTruncatingHead

//是否能与用户交互,默认是false
nameLabel.isUserInteractionEnabled = true;

//文本是否可变,默认是true
nameLabel.isEnabled = false;

//文本行数,等于0时没有行数限制
nameLabel.numberOfLines = 2;

//最小字体,行数为1时有效,默认为0.0
nameLabel.minimumScaleFactor = 10.0;

//文本内容自动适应标签大小,默认是false
nameLabel.adjustsFontSizeToFitWidth = true

//设置文本高亮
nameLabel.isHighlighted = true;

//设置文本高亮颜色
nameLabel.highlightedTextColor = UIColor.green

//富文本设置
let attributeString:NSMutableAttributedString=NSMutableAttributedString(string: "1234567890123")

//文本0开始5个字符字体HelveticaNeue-Bold,16号
attributeString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue-Bold", size: 16)!, range: NSMakeRange(0, 5))

//设置字体颜色
attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: NSMakeRange(0, 3))

//设置文字背景颜色
attributeString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.green, range: NSMakeRange(3, 3))
nameLabel.attributedText = attributeString

//设置文本基线位置,有以下三种,只有文本行数等于1时有效
//AlignBaselines : 默认值文本最上端于 label 中线对齐
//AlignCenters : 文本中线于 label 中线对齐
//None : 文本最低端与 label 中线对齐
nameLabel.baselineAdjustment = .alignCenters
let textString = "swift大法好!"

//固定宽度,来计算自适应的高度
let size1:CGSize = textString.textSizeWithFont(font: UIFont.systemFont(ofSize: 14), constrainedToSize: CGSize(width:200, height:CGFloat(MAXFLOAT)))
print("固定宽度200时,文本的区域为:\(size1)")
print("固定宽度200时,文本的高度是:\(size1.height)")

//不限制宽度,自适应文本之后,计算文本的长度
let size2:CGSize = textString.textSizeWithFont(font: UIFont.systemFont(ofSize: 14), constrainedToSize: CGSize.zero)
print("不限制宽度,文本的区域为:\(size2)")
print("不限制宽度,文本的长度是:\(size2.width)")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

extension String {
    //    constrainedToSize 如果一行,用CGSizeZero,否则用CGSizeMake(你想要的宽度, CGFloat(MAXFLOAT)
    func textSizeWithFont(font: UIFont, constrainedToSize size:CGSize) -> CGSize {
        var textSize:CGSize!
        if size.equalTo(CGSize.zero) {
            let attributes = NSDictionary(object: font, forKey: NSFontAttributeName as NSCopying)
            textSize = self.size(attributes: attributes as? [String : AnyObject])
        } else {
            let option = NSStringDrawingOptions.usesLineFragmentOrigin
            let attributes = NSDictionary(object: font, forKey: NSFontAttributeName as NSCopying)
            let stringRect = self.boundingRect(with: size, options: option, attributes: attributes as? [String : AnyObject], context: nil)
            textSize = stringRect.size
        }
        return textSize
    }
}

代码仅供参考,希望可以帮到你,如果您有补充请直接私信希望能互相学习互相进步!

GitHub下载地址