1.根据字符串的长度确定Button的长度(button的高度给定)

let hight:CGFloat = 30.0

let size1 = CGSize(width: getLabWidth(labelStr: "我的升级换代卡号多少", font: UIFont.systemFont(ofSize: 14), height: hight), height: hight)

let rect1 = CGRect(origin: CGPoint(x:40,y:200), size: size1)//设置Button的frame

let bt1:UIButton = UIButton.init(frame: rect1)

bt1.backgroundColor = UIColor.red//设置Button的背景色

bt1.titleLabel?.font = UIFont.systemFont(ofSize: 12)//设置Button的字体大小

bt1.titleLabel?.numberOfLines = 0;//设置Button的文本换行

bt1.setTitle("我的手机点哈卡的卡删繁就简哈哈放假萨法介绍", for: UIControlState.normal)//设置Button的文本内容

bt1.addTarget(self, action: #selector(didBt), for: UIControlEvents.touchUpInside)//设置Button的点击事件

bt1.isSelected = true//设置Button的选中状态

bt1.layer.borderWidth = 2.0;//设置Button的边框宽度

bt1.layer.borderColor = UIColor.blue.cgColor//设置Button的边框颜色

bt1.layer.cornerRadius = 10;//设置Button的圆角弧度

bt1.layer.masksToBounds = true

self.view.addSubview(bt1)//把button添加到控制器里

2.根据字符串的长度确定Button的高度(button的宽度给定)

let width:CGFloat = 60.0;

let size = CGSize(width: width, height: getLabHeigh(labelStr: "我的升级换代卡号多少", font: UIFont.systemFont(ofSize: 14), width: width))

let rect = CGRect(origin: CGPoint(x:20,y:100), size: size)//设置Button的frame

let bt:UIButton = UIButton.init(frame: rect)

bt.backgroundColor = UIColor.red//设置Button的背景色

bt.titleLabel?.font = UIFont.systemFont(ofSize: 12)//设置Button的文本字体大小

bt.titleLabel?.numberOfLines = 0;

bt.setTitle("我的升级换代卡号多少", for: UIControlState.normal)//设置Button的文本内容

bt.addTarget(self, action: #selector(didBt), for: UIControlEvents.touchUpInside)//设置Button的点击事件

bt.isSelected = true//设置Button的选中状态

self.view.addSubview(bt)

3.相关方法

@objc func didBt(bt:UIButton){

if bt.isSelected == true {

self.view.backgroundColor = UIColor.red

bt.isSelected = false

}else{

self.view.backgroundColor = UIColor.yellow

bt.isSelected = true

}

}

func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat {

let statusLabelText: NSString = labelStr as NSString

let size = CGSize(width: width, height: 900)

let dic = NSDictionary(object: font, forKey: NSFontAttributeName as NSCopying)

let strSize = statusLabelText.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: dic as? [String : AnyObject], context: nil).size

return strSize.height

}

func getLabWidth(labelStr:String,font:UIFont,height:CGFloat) -> CGFloat {

let statusLabelText: NSString = labelStr as NSString

let size = CGSize(width:900,height: height)

let dic = NSDictionary(object: font, forKey: NSFontAttributeName as NSCopying)

let strSize = statusLabelText.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: dic as? [String : AnyObject], context: nil).size

return strSize.width

}

Swift3.0学习之Button的更多相关文章

  1. Swift3.0学习之基础部分

    1.常量和变量 常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage )和一个指定类型的值(比如数字 10 或者字符串 " ...

  2. swift学习笔记 - swift3.0用GCD实现计时器

    swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...

  3. Swift2.3 --> Swift3.0 的变化

    Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...

  4. iOS 日期处理 (Swift3.0 NSDate)

    处理日期的常见情景 NSDate -> String & String -> NSDate 日期比较 日期计算(基于参考日期 +/- 一定时间) 计算日期间的差异 拆解NSDate ...

  5. Swift3.0语法变化

    写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcod ...

  6. swift3.0 hello swift(1)

    一直对swift感兴趣,在前段时间的新闻中,大多是swift3.0发布和xcode8.0的改进,因为改动比较大,以前使用swift2.x做项目的人,都在担心其项目从2.x迁移到3.0+的问题.以前简单 ...

  7. Bootstrap3.0学习第八轮

    Bootstrap3.0学习第八轮(工具Class)   前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/34 ...

  8. Bootstrap3.0学习第六轮(表单)

    Bootstrap3.0学习第六轮(表单) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.h ...

  9. swift3.0 简单直播和简单网络音乐播放器

    本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...

随机推荐

  1. java运算符与程序逻辑控制

    一.运算符 java中的运算符大致分为四种:数学运算符,关系运算符.逻辑运算符.位运算 1.数学运算符:即咱们平常说的加减乘除运算,这种运算是分先后顺序的,如果想要优先进行运算,建议加上小括号,使其运 ...

  2. 精尽MyBatis源码分析 - MyBatis-Spring 源码分析

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  3. 编程C语言进阶篇——自定义数据类型:结构体

    一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...

  4. 2020年的UWP(4)——UWP和等待Request的Desktop Extension

    上一篇我们讨论了UWP和Desktop Extension交互中,Desktop Extension执行后立即退出的场景.下图是提到的四种场景分类: 执行后立即退出 等待request,处理完后退出 ...

  5. gulp常用配置

    由于项目中经常会使用到gulp,而每次配置大概都差不多,所以将配置记录一下 项目结构 ├─dist │ ├─assets │ ├─css │ ├─images │ └─js ├─node_module ...

  6. 冲刺随笔——Day_Three

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  7. python数据更新

    def cal(s,m): if s==u"废弃" or s==u"拆除": return 4 elif s==u"竣工": return ...

  8. PyQt(Python+Qt)学习随笔:树型部件的QTreeWidgetItem项中列不同角色数据的有关访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项中可以有多列数据,每列数据可以根据 ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件的geometry几何属性

    geometry属性保存部件相对于其父级对象的位置和大小,Qt实际上是以一个长方形来表示部件的位置和大小的,包括左上角的坐标位置.长度和宽带. 当部件的geometry调整时,部件如果可见将立即接收m ...

  10. Win10激活失败并提示错误代码0xC004C003的解决方法

    亲测,可用. 步骤如下: 进入cmd,管理员权限登录 slmgr.vbs /upk slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms zh.us ...