ios - iOS - 如何删除 UIButton 边框颜色?
问题描述
当前按钮设置
button.backgroundColor = UIColor.brown
button.layer.cornerRadius = 60/2
button.layer.borderWidth = 5
button.layer.borderColor = UIColor.white.cgColor
看起来像上面的代码问题是,外面有一个很细的边框,如下图所示。
backgroundColor
边框颜色与您设置的相同。更改backgroundColor
为红色会将底部边框更改为红色。
我已经设置了button.layer.shadowColor
。按钮大小为 60,宽度/高度使用锚点设置。
仍在搜索中。但只有borderColor设置。这令人沮丧。请寻求帮助。为什么会这样?
解决方案
您可以通过这种方式实现 UIView 扩展,
extension UIView {
func roundCorners(_ corners: UIRectCorner, radius: CGFloat, borderColor: UIColor, borderWidth: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
let borderPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let borderLayer = CAShapeLayer()
borderLayer.path = borderPath.cgPath
borderLayer.lineWidth = borderWidth
borderLayer.strokeColor = borderColor.cgColor
borderLayer.fillColor = UIColor.clear.cgColor
borderLayer.frame = self.bounds
self.layer.addSublayer(borderLayer)
}
}
像这样使用它,
button.backgroundColor = UIColor.brown
button.roundCorners([.allCorners], radius: 30.0, borderColor: UIColor.white, borderWidth: 10.0)
这将显示这样的输出,
上图包含带有白色边框颜色的按钮。
这将是您应用程序中所有按钮的通用解决方案。
如有任何疑问,请告诉我。
推荐阅读
- unity3d - 调用 api 并在其后设置数据的统一问题
- javascript - Javascript 1.1 / HTML 3.0 音频播放器
- c - 用c中的另一个临时堆栈对堆栈进行排序会产生分段错误
- laravel - FP_route 上的 Laravel Route 未定义错误
- c# - Winforms DataGridView 无法选择正确的 Id 和 IndexOutOfRangeException
- airflow - 有没有办法知道气流传感器正在进行什么迭代?
- sql - 父子关系错误:关卡的源属性标记为“父”
- android - 如何在android中打开内置的下载管理器
- ios - swift:一个一个地打印单词
- html - 如何阻止div的高度增长?