iOS - Как удалить цвет границы UIButton? - PullRequest
0 голосов
/ 02 мая 2018

Текущие настройки кнопок

button.backgroundColor = UIColor.brown
button.layer.cornerRadius = 60/2
button.layer.borderWidth = 5
button.layer.borderColor = UIColor.white.cgColor

похоже на код выше Проблема в том, что снаружи очень тонкая граница, как показано на рисунке ниже.

enter image description here

Цвет границы такой же, как установленный backgroundColor. Изменение backgroundColor на красный меняет нижнюю границу на красный.

Я установил button.layer.shadowColor. Размер кнопки равен 60, а ширина / высота задается с помощью привязки.

Все еще в поиске. Но только настройки borderColor. Это расстраивает. Пожалуйста, обратитесь за помощью. Почему это происходит?

Ответы [ 5 ]

0 голосов
/ 02 мая 2018

Вы должны обрезать границу и добавить пустой заголовок

 button.clipsToBounds = true
 button.setTitle("  ", for: .normal)
0 голосов
/ 02 мая 2018

Я знаю, почему вокруг кнопки есть линия, я встречал ее раньше. На самом деле линия - это промежуток между границей и фоном, button.layer.border рисуется неправильно. Вы можете попытаться нарисовать границу самостоятельно и накрыть на кнопку.

0 голосов
/ 02 мая 2018

Вы можете реализовать расширение 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)

Это будет отображать вывод, как это,

enter image description here

Над изображением находится кнопка с белой рамкойЦвет.

Это будет общее решение для всех кнопок в ваших приложениях.

Сообщите мне, если возникнут какие-либо вопросы.

0 голосов
/ 02 мая 2018

Вы должны обрезать границы слоя.

button.layer.masksToBounds = true
0 голосов
/ 02 мая 2018

Установка shadowOpacity на ноль должна решить вашу проблему.

button.layer.shadowOpacity = 0.0;
...