Swift学习笔记-UIButton使用详解

  要使用任何一个控件都要先了解它的创建和相关属性。下面我们就一一来看:

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, width: 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, width: 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

 

转载于:https://www.cnblogs.com/liYongJun0526/p/7544414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值