UIButton

9 篇文章 0 订阅
9 篇文章 0 订阅

一、UIButton 的创建

let btn = UIButton()

能够定义的 button 类型有以下6种:

public enum ButtonType : Int {
        case custom = 0 /// 自定义风格
        @available(iOS 7.0, *)
        case system = 1 /// 系统默认
        case detailDisclosure = 2 /// 蓝色小箭头按钮,主要做详细说明用
        case infoLight = 3 /// 亮色感叹号
        case infoDark = 4 /// 暗色感叹号
        case contactAdd = 5 /// 十字加号按钮
        @available(iOS 13.0, *)
        case close = 7 /// 减号
        public static var roundedRect: UIButton.ButtonType { get }
    }

注意:system 和 custom 的区别:
custom的按钮许多方法都要自己设定,比如点击的闪烁、isEnable 的置灰效果

QQ20210219-161501-HD

二、设置 frame

1.创建的时候设置

btn.frame  =  CGRectMake(10, 10, 300, 100)

2.约束 (snp 或者 Massory)

三、 基本属性

1.设置背景

btn.backgroundColor = UIColor. clear

2.边框

btn.layer.borderWidth = 1
btn.layer.borderColor = UIColor.green.cgColor

3.圆角效果

btn.layer.cornerRadius = btn.frame.height / 2.0 /// 圆角只要设置为高度的一半即可

在这里插入图片描述
4.设置按钮内部图片间距和标题间距

let insets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) /// 设置按钮内部图片间距
insets.top = insets.bottom = insets.right = insets.left = 10;
btn.contentEdgeInsets = insets;
btn.titleEdgeInsets = insets; /// 标题间距

5.设置 button 标题和标题颜色

btn.setTitle("点我", for: .normal)

btn.setTitleColor(UIColor.black, for: .normal)

6.设置 button 填充图片和背景图片

 btn.setImage(UIImage.init(named: @"1"), for: .normal)

 btn.setBackgroundImage(UIImage.init(named: @"1"), for: .normal)

注意:设置点击按钮图片不闪:

btn.adjustsImageWhenHighlighted = false

7.设置按钮按下会发光

 btn.showsTouchWhenHighlighted = true /// 没啥用

8.其他属性

open var isEnabled: Bool // default is YES. if NO, ignores touch events and subclasses may draw differently

open var isSelected: Bool // default is NO may be used by some subclasses or by application

open var isHighlighted: Bool // default is NO. this gets set/cleared automatically when touch enters/exits during tracking and cleared on up

btn.imageView?.semanticContentAttribute = .forceRightToLeft // 默认图片在左边,文字在右边,通过这个属性可以设置图片和文字的位置  

四、state 状态

State: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现

public struct State : OptionSet {
        public init(rawValue: UInt) 
        public static var normal: UIControl.State { get } // 常规状态
        public static var highlighted: UIControl.State { get } // 高亮状态
        public static var disabled: UIControl.State { get } // 禁用状态
        public static var selected: UIControl.State { get } //  选中状态
        @available(iOS 9.0, *)
        public static var focused: UIControl.State { get } // Applicable only when the screen supports focus
        public static var application: UIControl.State { get } // additional flags available for application use
        public static var reserved: UIControl.State { get } // flags reserved for internal framework use
}

五、添加或删除事件处理

OC:

[btn addTarget:self action:@selector(btnDidClick:) forControlEvents:UIControlEventTouchUpInside];

[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];

swift:

btn.addTarget(self, action: #selector(click), for: .touchUpInside)

@objc func click() {
       
}

注意:swift中button点击事件一般不用原生的方法,使用RxSwift来进行绑定

六、一个小技巧

对于 storyBoard 或者 xib 有多个 button 的情况,可以把这些 button 放进一个集合里,共用同一个点击事件,再使用循环将 button 区分开

@IBOutlet var btns: [UIButton]!
    
@IBAction func btnDidClick(_ sender: UIButton) {
    for btn in btns {
        btn.layer.cornerRadius = btn.frame.height / 2.0 /// 圆角只要设置为高度的一半即可
        btn.layer.borderWidth = 1
        if btn == sender {
            btn.layer.borderColor = UIColor.green.cgColor
        } else {
            btn.layer.borderColor = UIColor.gray.cgColor
        }
    }
}

关联技巧:
事件直接拖动就行
在这里插入图片描述
按钮先关联一个:
在这里插入图片描述
后面的按钮拖到名称那边就可以
一定要往名称那边拖!在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值