Swift 一,UILabel详解

前言

从今天开始,我也要开始认真学习Swift,以前一直在说学习它,但是都被自己找各种理由把时间浪费了。想屎的节奏。以后开始在此记录也是鞭策自己。Swift基本的语法知识我不在这写了,直接开始UI部分,因为网上已经有好多的Swift的基础知识部分了,人家说的都很好,我也就不献丑了。
今天说一下UILabel这个控件,基本上这应该是iOS最简单的一个控件了。我会结合苹果的API,然后加上自己的小demo开始。好了,Let’s Go!


正文

首先我们先创建一个简单的Label:

var testLabel = UILabel(frame: CGRectMake(50,100,150,50))
        testLabel.text = "这是我的一个label"
        self.view.addSubview(testLabel)

这样我们创建了一个最简单的label,显示如下:
简单label
接下来你想在这个简单label上加一点效果显示吗?好的,我们这样做:

//做一点效果

        //改变字体大小
        testLabel.font = UIFont.systemFontOfSize(20)
        //改变字体颜色
        testLabel.textColor = UIColor.redColor()
        //改变字体位置(居中)
        testLabel.textAlignment = NSTextAlignment.Center
        //增加一个阴影
        testLabel.shadowOffset = CGSizeMake(2.0, 2.0)
        testLabel.shadowColor = UIColor.blueColor()

运行效果:
运行效果
在代码里面我已经注释了,大家应该能看懂。官方API:

public var text: String? // default is nil
public var font: UIFont! // default is nil (system font 17 plain)
public var textColor: UIColor! // default is nil (text draws black)
public var shadowColor: UIColor? // default is nil (no shadow)
public var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow
public var textAlignment: NSTextAlignment // default is NSTextAlignmentLeft
public var lineBreakMode: NSLineBreakMode // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text`

上面运行结果大家应该看到,text内容超过了label的宽度,所以系统默认把超出的部分截取了。那么我们能不能自己选择截取的形式呢?代码如下:

/**
  *  
 case ByWordWrapping // Wrap at word boundaries, default
 case ByCharWrapping // Wrap at character boundaries
 case ByClipping // Simply clip
 case ByTruncatingHead // Truncate at head of line: "...wxyz"
 case ByTruncatingTail // Truncate at tail of line: "abcd..."
 case ByTruncatingMiddle // Truncate middle of line:  "ab...yz"
   */

        //直接截取方式,不会显示...
        testLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
        //效果同上
        testLabel.lineBreakMode = NSLineBreakMode.ByClipping
        testLabel.lineBreakMode = NSLineBreakMode.ByCharWrapping
        //超出了的话把前面的内容截取,...表示
        testLabel.lineBreakMode = NSLineBreakMode.ByTruncatingHead
        //超出了的话把后面的内容截取,...表示
        testLabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail
        //超出了的话把中间的内容截取,...表示
        testLabel.lineBreakMode = NSLineBreakMode.ByTruncatingMiddle

从这里我们可以看出系统默认的是ByTruncatingTail这个形式的截取。
想不想在你点击这个label的时候让label内容颜色改变:

//高亮
        testLabel.highlightedTextColor = UIColor.redColor()
        testLabel.highlighted = true

这个效果我做的时候没有成功,直接运行显示就是这个颜色了,如果你成功了请告诉我一下。
想在点击label的时候去做一些事情,你必须做的一步操作:

//打开交互,默认是关闭的
        testLabel.userInteractionEnabled = true

label的内容不知道有多少,想要自适应:

        let text:String = "从今天开始,我也要开始认真学习Swift,以前一直在说学习它,但是都被自己找各种理由把时间浪费了。想屎的节奏。以后开始在此记录也是鞭策自己。"
        testLabel.text = text
        //不限制行数
        testLabel.numberOfLines = 0
        //设置行数属性
        let options : NSStringDrawingOptions = NSStringDrawingOptions.UsesLineFragmentOrigin
        //计算
        let boundingRect = text.boundingRectWithSize(CGSizeMake(320, 0), options: options, attributes: [NSFontAttributeName:testLabel.font], context: nil)
        //显示
        testLabel.frame = CGRectMake(10, 100, boundingRect.size.width, boundingRect.size.height)

运行效果:
自适应高度
如果你需要的效果是单行label根据内容多少适应宽度:

//单行改变字体大小去适应宽度显示所有的内容
        testLabel.adjustsFontSizeToFitWidth = true

运行效果:
单行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值