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. PHP 递归删除目录中文件

    /** * 递归删除目录中文件 * @param $pathname * @return bool */public static function delDir($pathname)//要删除的目录 ...

  2. uniapp自定义picker城市多级联动组件

    uniapp自定义picker城市多级联动组件 支持多端--h5.app.微信小程序.支付宝小程序... 支持自定义配置picker插件级数 支持无限级 注意事项:插件传入数据格式为children树 ...

  3. 程序演示:C语言第一个简单实例

    在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: 1 2 3 4 5 6 7 8 9 #include ...

  4. Python中的静态属性、实例属性、静态方法、实例方法之间的区别

  5. sentinel降级误解

    public void initDegradeRule(){ List<DegradeRule> rules=new ArrayList<>(); DegradeRule ru ...

  6. 做IT需要掌握的电力基础知识

    电流 损耗 直流电的传输损耗大,所以不适合长距离传输, 交流电的传输损耗小,所以适合长距离传输, 使用 直流电电压稳定,无白躁声,故适於电子产品使用(例如电视机,收音机电脑等), 交流电要经过整流/开 ...

  7. go结构体与方法

    go结构体相当于python中类的概念 结构体用来定义复杂的数据结构,存储很多相同的字段属性 1.结构体的定义以及简单实用 package main import ( "fmt" ...

  8. 简单dp水题

    #include <bits/stdc++.h> using namespace std; #define limit (100 + 5)//防止溢出 #define INF 0x3f3f ...

  9. 第9.13节 Python文件操作总结

    本章老猿重点介绍了Python io模块的文件操作相关功能,包括文件打开.读.写.文件定位.文件关闭,并介绍了二进制文件和文本文件处理的差异,以及相关文件编码的一些知识,最后简单提及了Python中与 ...

  10. PyQt(Python+Qt)学习随笔:QTreeWidget树型部件中的QTreeWidgetItem项构造方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeWidget树型部件的项是单独的类对象,这个类就是QTreeWidgetItem. QTr ...