Swift3.0学习之Button
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的更多相关文章
- Swift3.0学习之基础部分
1.常量和变量 常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage )和一个指定类型的值(比如数字 10 或者字符串 " ...
- swift学习笔记 - swift3.0用GCD实现计时器
swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...
- Swift2.3 --> Swift3.0 的变化
Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...
- iOS 日期处理 (Swift3.0 NSDate)
处理日期的常见情景 NSDate -> String & String -> NSDate 日期比较 日期计算(基于参考日期 +/- 一定时间) 计算日期间的差异 拆解NSDate ...
- Swift3.0语法变化
写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcod ...
- swift3.0 hello swift(1)
一直对swift感兴趣,在前段时间的新闻中,大多是swift3.0发布和xcode8.0的改进,因为改动比较大,以前使用swift2.x做项目的人,都在担心其项目从2.x迁移到3.0+的问题.以前简单 ...
- Bootstrap3.0学习第八轮
Bootstrap3.0学习第八轮(工具Class) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/34 ...
- Bootstrap3.0学习第六轮(表单)
Bootstrap3.0学习第六轮(表单) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.h ...
- swift3.0 简单直播和简单网络音乐播放器
本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...
随机推荐
- Thrift接口简介
参考地址:http://roclinux.cn/?p=3316 [thrift是什么] 计算机技术里一款著名的通信框架 – thrift框架 thrift的全名叫做Apache thrift,是一款软 ...
- Arcgis基于高程(DEM)计算地形湿度指数(TWI),以及坡度(Slope)度单位转换为弧度
以30m*30m分辨率的图层为例 一.基于表面工具箱Surface计算Slope 1.如下图输入图层DEM,输出Slope 2.单位转换: Scale_slope=Slope*pi/180 二.基于水 ...
- Beta冲刺随笔——Day_Nine
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...
- 第12.5节 Python time模块导览
一.时间相关的概念 time模块模块提供了各种时间相关的函数,在介绍时间相关功能前,先介绍一些术语和惯例: epoch 是时间开始的点,并且取决于平台.对于Unix, epoch 是1970年1月1日 ...
- PyQt学习随笔:Qt中Model/View相关的主要类及继承关系
View相关类类继承关系: Model相关类类继承关系:
- 第15.16节 PyQt(Python+Qt)入门学习:PyQt中的信号(signal)和槽(slot)机制以及Designer中的使用
老猿Python博文目录 老猿Python博客地址 一.引言 前面一些章节其实已经在使用信号和槽了,但是作为Qt中最重要的机制也是Qt区别与其他开发平台的重要核心特性,还是非常有必要单独介绍. 二.信 ...
- fedora版本如何升级
自动升级 sudo dnf update --refresh # 更新系统包 sudo dnf install dnf-plugin-system-upgrade # 安装系统更新插件 sudo dn ...
- Scrum 冲刺第三天
一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:博客编写.spring boot学习 今日工作计划:将项目代码更新到最新版本 工作中遇到的困难:各成员的环境不一样, ...
- 个人介绍&软工5问
个人简历: 姓名:温海源 性别:男 专业:软件工程 学校:广东工业大学 技术能力:掌握C语言 JAVA在学 证书:CET4,CET6 联系方式:1424315382@qq.com 软工5问: 1. ...
- (8)ASP.NET Core3.1 Ocelot Consul服务注册与发现
1.服务注册与发现(Service Discovery) ●服务注册:我们通过在每个服务实例写入注册代码,实例在启动的时候会先去注册中心(例如Consul.ZooKeeper.etcd.Eureka) ...