当前位置: > > > Swift - 文本标签(UILabel)的用法

Swift - 文本标签(UILabel)的用法

(本文代码已升级至Swift3)

1,标签的创建
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //设置标签x坐标:10,y坐标:20,长:300,宽:100
        let label = UILabel(frame:CGRect(x:10, y:20, width:300, height:100))
        label.text = "hangge.com"
        self.view.addSubview(label);
    }
}


2,背景颜色和文字颜色的设置
label.textColor = UIColor.white //白色文字
label.backgroundColor = UIColor.black //黑色背景

3,对齐方式的设置
label.textAlignment = .right//文字右对齐

4,文字阴影的设置
label.shadowColor = UIColor.gray  //灰色阴影
label.shadowOffset = CGSize(width:1.5, height:1.5)  //阴影的偏移量

5,字体的设置
label.font = UIFont(name:"Zapfino", size:20)

6,文字过长时的省略方式
label.lineBreakMode = .byTruncatingTail  //隐藏尾部并显示省略号
label.lineBreakMode = .byTruncatingMiddle  //隐藏中间部分并显示省略号
label.lineBreakMode = .byTruncatingHead  //隐藏头部并显示省略号
label.lineBreakMode = .byClipping  //截去多余部分也不显示省略号

7,文字大小自适应标签宽度
label.adjustsFontSizeToFitWidth = true //当文字超出标签宽度时,自动调整文字大小,使其不被截断

8,使标签可以显示多行文字
label.numberOfLines = 2  //显示两行文字(默认只显示一行,设为0表示没有行数限制)

9,设置文本高亮
//设置文本高亮
label.isHighlighted = true
//设置文本高亮颜色
label.highlightedTextColor = UIColor.green

10,富文本设置
//富文本设置
let attributeString = NSMutableAttributedString(string:"welcome to hangge.com")
//从文本0开始6个字符字体HelveticaNeue-Bold,16号
attributeString.addAttribute(NSFontAttributeName,
                             value: UIFont(name: "HelveticaNeue-Bold", size: 16)!,
                             range: NSMakeRange(0,6))
//设置字体颜色
attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue,
                             range: NSMakeRange(0, 3))
//设置文字背景颜色
attributeString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.green,
                             range: NSMakeRange(3,3))
label.attributedText = attributeString
评论7
  • 7楼
    2017-10-13 11:23
    张歌

    航哥,为什么UILabel.attributedText赋一个值NSMutableAttributedString,NSMutableAttributedString里面包含了unicode表情,显示出来UILabel里面就有乱码;
    但是直接UILabel.text赋同样的NSMutableAttributedString就不会显示乱码啊?
    项目现在需要用富文本的,不然用多个UILabel来拼就很麻烦,这个怎么解决啊?

    站长回复

    我测试了下,就是NSMutableAttributedString里面包含表情也不会有问题啊。不知道你那边是什么情况

  • 6楼
    2017-08-16 22:59
    jengchauwei

    用什么方法能定位Label 当中的特定文字呢 ,点击到的那块

    站长回复

    可以使用 textView 的链接检测功能实现,具体可以参考我之前写的这两篇文章:
    Swift - 给UITextView添加自定义链接,以及链接的点击响应
    Swift - 让textview支持特殊标签点击响应(@标签、#标签)

  • 5楼
    2017-06-05 18:03
    天空晴朗

    富文本设置设置中,能不能给 指定的 文字加上 点击手势啊

    站长回复

    我原来写过一篇相关的文章,你可以参考下:Swift - 给UITextView添加自定义链接,以及链接的点击响应

  • 4楼
    2017-04-10 12:20
    admin

    如何设置点击监听呢?

    站长回复

    在其上面添加个点击手势就可以了,手势用法参考我的另一篇文章:Swift - 各种手势检测大全(UIGestureRecognizer及其子类)

  • 3楼
    2016-08-30 17:54
    H_jiyue

    var label=UILabel(frame:CGRectMake(10,20, 300, 100))
    label.text="hangge.com"
    self.view.addSubview(label);
    我就按照你的这样写 为什么会报 Variable 'label' was never mutated; consider changing to 'let' constant 的⚠️?

    站长回复

    Swift3语法有调整,我把文章代码更新了。你可以再看下。

  • 2楼
    2016-05-14 13:40
    H4G

    @航哥,接上次fade in and out的问题。
    我使用以下代码实现了淡入动画效果
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(1.0)
    image.alpha = 1
    image.image = UIImage(named: "arrow")
    UIView.commitAnimations()

    但我在上面代码后面,接如下代码的时候,为什么结果只有淡出效果,淡入动画效果无效了
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(1.0)
    image.alpha = 0
    image.image = UIImage(named: "arrow")
    UIView.commitAnimations()

    站长回复

    这个不能连着写,要不下面那个会覆盖上面的,而不是你想像的先执行上面一个动画,完毕后再执行下面那个。

    如果想要实现元件自动会先淡入后淡出的效果,试试下面代码:
    UIView.animateWithDuration(1, delay:0.01,
                               options:UIViewAnimationOptions.CurveEaseInOut, animations:
        {
            ()-> Void in
            self.image.alpha = 1
        },
       completion:{
        (finished:Bool) -> Void in
        UIView.animateWithDuration(1, animations:{
            ()-> Void in
            self.image.alpha = 0
        })
    })

  • 1楼
    2016-04-27 09:39
    H4G

    航哥,Label里的Text,怎么实现Fade in and out,渐隐渐现。

    站长回复

    //淡出动画
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(2.0)
    label.alpha = 0.0
    UIView.commitAnimations()

    //淡入动画
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(2.0)
    label.alpha = 1.0
    UIView.commitAnimations()