/* swift3.0 UIButton用法 */
/* 1. 创建button的几种类型
(1)UIButtonType.system: 前面不带图标,默认文字颜色为蓝色,触摸有高亮效果
(2)UIButtonType.custom: 定制按钮,前面不带图片,默认文字颜色为白色,无触摸时的高亮效果
(3)UIButtonType.contactAdd: 前面带+图标按钮,默认颜色为蓝色,触摸有高亮效果
(4)UIButtonType.....
*/
/* 创建button */
let button:UIButton = UIButton.init(type: .custom)
button.bounds = CGRect.init(origin: CGPoint.zero, size: CGSize.init(width: 100, height: 40))
button.center = view.center
button.setTitle("hello world", for: .normal)
button.setTitleColor(UIColor.red, for: .normal)
button.layer.borderColor = UIColor.red.cgColor
button.layer.borderWidth = 1;
view.addSubview(button)
/* 2. button的四种状态
(1) .normal 普通状态
(2) .highlighted 触摸状态,按下~弹起之间
(3) .selected 选中状态
(4) .disabled 禁用状态下的文字
button上的文字,颜色,图片等需要针对不同的状态设置;
*/
/* 按钮的文字设置 */
button.setTitle("普通状态", for: .normal)
button.setTitle("高亮状态", for: .highlighted)
button.setTitle("禁用状态", for: .disabled)
/* 按钮的文字颜色设置 .custom形式创建的button,文本默认为白色 */
button.setTitleColor(UIColor.black, for: .normal)
button.setTitleColor(UIColor.red, for: .highlighted)
button.setTitleColor(UIColor.green, for: .selected)
button.setTitleColor(UIColor.gray, for: .disabled)
/* 按钮文字阴影颜色的设置 */
button.setTitleShadowColor(UIColor.red, for: .normal)
/* 通过button设置shadowColor之后设置 label的shadowcolor无效 */
button.titleLabel?.shadowColor = UIColor.gray
/* 需要设置label中的shadowOffset才来出现阴影*/
button.titleLabel?.shadowOffset = CGSize.init(width: 1.5, height: 1.5)
/* 不同状态下 背景图片设置 */
button.setBackgroundImage( UIImage.init(named: "a.png"), for: .normal)
button.setBackgroundImage( UIImage.init(named: "b.png"), for: .highlighted)
/* 背景颜色 设置(不区分状态) */
button.backgroundColor = UIColor.green;
/* 在有些控件中设置image 会被渲染成统一颜色,而导致原来的颜色改变 */
// 设置RenderingMode(.alwaysOriginal) 保证使用原图片
let image = UIImage.init(named: "a.png")?.withRenderingMode(.alwaysOriginal)
button.setImage(image, for: .selected)
/* 设置取消高亮状态 */
button.adjustsImageWhenHighlighted = false;
/* 设置取消状态 */
button.adjustsImageWhenDisabled = false;
/* 按钮事件
touchDown 单点触摸按下 事件
touchDownRepeat 多点触摸按下事件
touchDragInside 触摸在控件内拖动时
touchDragOutside 触摸在控件外拖动
touchDragEnter 触摸从控件之外拖动到内部
touchDragExit 触摸从控件内部拖动到外部
touchUpInside 在控件之内触摸并抬起事件
touchUpOutside 在控件之外触摸抬起事件
touchCancel 触摸取消事件,即一次触摸因为放上太多手指而被取消,或者被电话打断
valueChanged 值改变
用的比较多的就是touchUpInside, valueChanged
*/
/* 按钮事件响应 */
button.addTarget(self, action: #selector(call), for:.touchUpInside)