透明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
相关产品推荐
相关产品推荐

