美文网首页
iOS开发笔记-123:swift5 UIButtonConfi

iOS开发笔记-123:swift5 UIButtonConfi

作者: 原味蛋炒饭 | 来源:发表于2022-07-27 15:29 被阅读0次
    if #available(iOS 15.0, *) {
        // 初始化一个configuration,有多种方法,可根据需要选择
        btn.configuration = UIButton.Configuration.plain()
        // title 和 subtitle的对其关系,文本是上下排版的
        btn.configuration?.titleAlignment = .leading
        // title he subtitle的间距
        btn.configuration?.titlePadding = 16.scaleToScreen()
        // image 和 文本 的相对位置
        btn.configuration?.imagePlacement = .trailing
        // image 和 文本的间距
        btn.configuration?.imagePadding = 16.scaleToScreen()
        // button的内容(title,subtitle,image)显示后与按钮的边距,默认由一段距离
        btn.configuration?.contentInsets = NSDirectionalEdgeInsets.zero
        // 设置按钮的状态变化的监听,根据变化来改变按钮的显示内容,之前都是全部设置进去自动切换的,现在不行了
        btn.configurationUpdateHandler = {(button: UIButton) -> Void in
            //根据状态修改内容
            switch button.state {
            case .normal, .highlighted:
                // image变化
                button.configuration?.image = UIImage.arrowPickUp
                // 背景的变化,默认会有些自带效果,
                button.configuration?.background.backgroundColor = .clear
                // 字体的样式与之前一样
                button.configuration?.attributedTitle = AttributedString(title, attributes: AttributeContainer([
                    NSAttributedString.Key.font : UIFont.customMediumFont(ofSize: UIFont.sizeL),
                    NSAttributedString.Key.foregroundColor : UIColor.whiteAlpha50 ?? .red]))
                // 子标题,iOS15之后才有,对应的button.subtitleLabel
                button.configuration?.subtitle = "abc"
    
            case .selected, [.selected, .highlighted]:
                // image变化,与上面对应
                button.configuration?.image = UIImage.arrowUnfold
    
            case .disabled:
                Log.Debug(message: "不可\(btn.state)")
            default:
                Log.Debug(message: "默认值\(btn.state)")
            }
            button.updateConfiguration()
            
        }
    } else {
        // iOS15 之前的属性设置
        btn.setTitle(title, for: .normal)
        // 字体颜色
        btn.setTitleColor(UIColor.whiteAlpha50, for: .normal)
        btn.setTitleColor(UIColor.whiteAlpha50, for: .selected)
        // 设置图片各种状态都需要设置
        btn.setImage(UIImage.arrowUnfold, for: .normal)
        btn.setImage(UIImage.arrowUnfold, for: .highlighted)
        btn.setImage(UIImage.arrowPickUp, for: .selected)
        btn.setImage(UIImage.arrowPickUp, for: [.selected, .highlighted])
        btn.titleLabel?.font = UIFont.customFont(ofSize: UIFont.sizeL)
        // 改变title与image的位置关系
        btn.titleEdgeInsets = UIEdgeInsets(top: 0, left: -15.scaleToScreen(), bottom: 0, right: 15.scaleToScreen())
        btn.imageEdgeInsets = UIEdgeInsets(top: 0, left: 51.scaleToScreen(), bottom: 0, right: -51.scaleToScreen())
        btn.backgroundColor = .gray
    }
    

    相关文章

      网友评论

          本文标题:iOS开发笔记-123:swift5 UIButtonConfi

          本文链接:https://www.haomeiwen.com/subject/lwezirtx.html