要使用任何一个控件都要先了解它的创建和相关属性。下面我们就一一来看:
1、按钮(UIButton)的创建
//创建一个custom类型的按钮 /** UIButtonType 详解 .custom (原形为 UIButtonType.custom)定制按钮,不带图标,默认文字颜色为白色,无触摸时的高亮效果 .system (原形为 UIButtonType.system)不带图标,默认文字颜色为蓝色,有触摸时的高亮效果 .detailDisclosure (原形为 UIButtonType.detailDisclosure)前面带“!”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 .infoLight (原形为 UIButtonType.infoLight)为感叹号“!”圆形按钮 .infoDark (原形为 UIButtonType.infoDark)为感叹号“!”圆形按钮 .contactAdd (原形为 UIButtonType.contactAdd)前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 ios7之后.detailDisclosure、.infoLight、.infoDark的效果都是前面带“!”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 */ let btn:UIButton = UIButton.init(type:.custom) //使用init方法直接创建没有Type // let btn:UIButton = UIButton.init() //设置按钮位置和大小 btn.frame = CGRect.init(x: 12, y: 80, 120, height: 80) //设置按钮文字 btn.setTitle("测试按钮", for:.normal) //设置按钮的背景颜色 btn.backgroundColor = UIColor.red //将btn添加到控制器的view上 self.view.addSubview(btn)
2、按钮的相关属性
let btn:UIButton = UIButton.init(type:.custom) //将btn添加到控制器的view上 self.view.addSubview(btn) //设置按钮位置和大小 btn.frame = CGRect.init(x: 12, y: 80, 120, height: 80) //设置按钮的背景颜色 btn.backgroundColor = UIColor.red /**设置按钮文字 .normal 普通状态下的文字 .highlighted 触摸状态下的文字 .disabled 禁用状态下的文字 .selected 选中状态下的文字 .focused 聚焦状态 (iOS新加入 没用过应该和3D Touch有关) .application 当用做应用标志时 .reserved 框架预留 无意义 */ btn.setTitle("测试按钮", for:.normal) //按钮标题颜色 btn.setTitleColor(UIColor.blue, for: .normal) //按钮标题的字体大小 btn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 15) //按钮文字阴影颜色 btn.setTitleShadowColor(UIColor.white, for: .normal) //使触摸模式下按钮也不会变暗(半透明) btn.adjustsImageWhenHighlighted = false //使禁用模式下按钮也不会变暗(半透明) btn.adjustsImageWhenDisabled = false //设置按钮的图标,默认情况下按钮会被渲染成单一颜色(默认图标在左,标题在右) btn.setImage(UIImage.init(named: "icon2"), for: .normal) /** 也可以设置成保留图标原来的颜色 .automatic 根据图片的使用环境和所处的绘图上下文自动调整渲染模式 .alwaysOriginal 始终绘制图片原始状态,不使用Tint Color .alwaysTemplate 始终根据Tint Color绘制图片,忽略图片的颜色信息 let iconImage = UIImage(named:"icon2")?.withRenderingMode(.alwaysOriginal) btn.setImage(iconImage, for: .normal) */ //图片与文字间的间距方式1 - 设置图片偏移量(imageEdgeInsets) // btn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, -20, 0) //图片与文字间的间距方式2 - 设置文字偏移量(titleEdgeInsets) // btn.titleEdgeInsets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 0) //按钮背景图片 btn.setBackgroundImage(UIImage.init(named: "背景图片"), for: .normal) //添加触摸事件(不传递触摸对象) /** 常用的触摸事件类型 touchDown 单点触摸按下事件,点触屏幕 touchDownRepeat 多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候 touchDragInside 触摸在控件内拖动时 touchDragOutside 触摸在控件外拖动时 touchDragEnter 触摸从控件之外拖动到内部时 touchDragExit 触摸从控件内部拖动到外部时 touchUpInside 在控件之内触摸并抬起事件 touchUpOutside 在控件之外触摸抬起事件 touchCancel 触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断 */ // btn.addTarget(self, action: #selector(btnClickAction), for: .touchUpInside) // 添加触摸事件(传递触摸对象) btn.addTarget(self, action: #selector(btnClickAction(btn:)), for: .touchUpInside) /** 按钮文字太长时的处理方法 默认情况下,如果按钮文字太长超过按钮尺寸,则会省略中间的文字如果要调整省略的字的位置可以通过修改 button 按钮中 titleLabel 的 lineBreakMode 属性。如:省略头部文字,省略部分用...代替 */ //如果要 看效果就把标题的内容写多点 btn.titleLabel?.lineBreakMode = .byTruncatingHead //设置按键的圆角 btn.layer.cornerRadius = 5 //设置按钮的边框宽度 btn.layer.borderWidth = 1 //设置按钮边框的颜色 btn.layer.borderColor = UIColor.yellow.cgColor //设置边框的透明度 btn.alpha = 1