首页 > 解决方案 > 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设置。这令人沮丧。请寻求帮助。为什么会这样?

标签: iosuibuttonborder

解决方案


您可以通过这种方式实现 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)

这将显示这样的输出,

在此处输入图像描述

上图包含带有白色边框颜色的按钮。

这将是您应用程序中所有按钮的通用解决方案。

如有任何疑问,请告诉我。


推荐阅读