Текущие настройки кнопок
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. Это расстраивает. Пожалуйста, попросите помощи. Почему это происходит?
Граница белая, как и ожидалось, но появляющаяся тонкая граница кажется тенью. Так что попробуйте убрать тень или очистить shadowColor
Обратитесь к ссылка на сайт Это может вам помочь
@ Mr.Kushwaha - я не ставил опцию тени. Я попробовал прозрачный цвет, но ничего не вышло.
@PPL - применены roundCorners. Но кнопка не отображается хаха :(
если кнопка не отображается, как вы можете сказать, что roundCorners применен? : D
@PPL - с использованием якоря -> widthAnchor.constraint / heightAnchor.constraint
Установка shadowOpacity
на ноль должна решить вашу проблему.
button.layer.shadowOpacity = 0.0;
Вариант тени я не ставил. Я попробовал прозрачный цвет, но ничего не вышло.
Вы можете реализовать расширение 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)
Это будет отображать вывод, подобный этому,
Выше изображение содержит кнопку с белой рамкой цвета.
Это будет общее решение для всех кнопок в ваших приложениях.
Дайте мне знать в случае каких-либо вопросов.
круглыеУглы применены. Но кнопка не отображается
Как кнопка не отображается? не могли бы вы подробнее рассказать
private let connectButton: UIButton = {let button = UIButton () button.translatesAutoresizingMaskIntoConstraints = false button.setTitle ("Test", for: .normal) button.setTitleColor (.white, for: .normal) button.titleLabel? .font = .systemFont (ofSize: 15, вес: .bold) button.backgroundColor = UIColor.brown button.roundCorners (.allCorners, radius: 30.0, borderColor: UIColor.white, borderWidth: 5.0) кнопка возврата} ()
без использования xib, раскадровки. Это было написано в коде. Место, где была создана кнопка, - tableViewCell. Я обязательно добьюсь успеха за ваши старания. : D
подкласс UIButton и вызовите этот метод при переопределении функции layoutSubviews ()
Спасибо!! : D Perfact !! очень очень красиво :) ха-ха
Вы должны обрезать границы слоя.
button.layer.masksToBounds = true
Я знаю, почему вокруг кнопки есть линия, я встречал ее раньше. На самом деле линия - это промежуток между границей и фоном, button.layer.border
рисует некорректно. Вы можете попробовать нарисовать рамку самостоятельно и накрыть кнопку.
вам нужно обрезать границу и добавить пустой заголовок
button.clipsToBounds = true
button.setTitle(" ", for: .normal)
попробуйте удалить shadowColor или очистить его