You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

透明UIButton子类设置自定义边框颜色不生效,显示为白色问题求助

问题根因

代码中自定义按钮边框颜色的参数传递不符合接口规范:

  • CGColor(red:green:blue:alpha:)接口要求红、绿、蓝三个颜色分量的取值范围为0.0~1.0的浮点数
  • 现有代码直接传入203、72、75这类适配0~255色阶的整数,所有超过1.0的分量会被CoreGraphics自动截断为1.0,最终三个分量全部为1.0,搭配设置的0.75透明度,渲染后就是半透明白色边框,和观察到的现象完全匹配。
修正方案
  • 手动将0255区间的色值归一化到01区间,每个色值除以255.0后再传入CGColor初始化接口
  • 优先通过UIColor实例生成对应的cgColor赋值给边框属性,可直接使用接受255色阶值的UIColor初始化方法,降低手动计算归一化值的失误概率
可直接运行的修正后代码
class transparentButton: UIButton {

    required init?(coder aDecoder: NSCoder) {
       super.init(coder: aDecoder)
        setupButton()
    }
    
    // Setup the button
    func setupButton() {
        self.backgroundColor = .clear
        self.layer.borderWidth = 3
        // 修正后的边框颜色赋值
        self.layer.borderColor = UIColor(
            red: 203/255.0,
            green: 72/255.0,
            blue: 75/255.0,
            alpha: 0.75
        ).cgColor
    }
}

内容的提问来源于stack exchange,提问作者Lucas Dahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 05:24:06