IOS - Как удалить цвет границы UIButton?

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

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

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

IOS - Как удалить цвет границы UIButton?

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

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

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

попробуйте удалить shadowColor или очистить его

Mr.Kushwaha 02.05.2018 08:02

Граница белая, как и ожидалось, но появляющаяся тонкая граница кажется тенью. Так что попробуйте убрать тень или очистить shadowColor

Sunil luitel 02.05.2018 08:04

Обратитесь к ссылка на сайт Это может вам помочь

MBN 02.05.2018 08:08

@ Mr.Kushwaha - я не ставил опцию тени. Я попробовал прозрачный цвет, но ничего не вышло.

J. soo 02.05.2018 08:25

@PPL - применены roundCorners. Но кнопка не отображается хаха :(

J. soo 02.05.2018 08:42

если кнопка не отображается, как вы можете сказать, что roundCorners применен? : D

PPL 02.05.2018 08:43

@PPL - с использованием якоря -> widthAnchor.constraint / heightAnchor.constraint

J. soo 02.05.2018 08:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
523
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

button.layer.shadowOpacity = 0.0;

Вариант тени я не ставил. Я попробовал прозрачный цвет, но ничего не вышло.

J. soo 02.05.2018 08:23
Ответ принят как подходящий

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

Это будет отображать вывод, подобный этому,

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

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

Дайте мне знать в случае каких-либо вопросов.

круглыеУглы применены. Но кнопка не отображается

J. soo 02.05.2018 08:40

Как кнопка не отображается? не могли бы вы подробнее рассказать

PPL 02.05.2018 08:41

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) кнопка возврата} ()

J. soo 02.05.2018 08:45

без использования xib, раскадровки. Это было написано в коде. Место, где была создана кнопка, - tableViewCell. Я обязательно добьюсь успеха за ваши старания. : D

J. soo 02.05.2018 08:57

подкласс UIButton и вызовите этот метод при переопределении функции layoutSubviews ()

PPL 02.05.2018 08:59

Спасибо!! : D Perfact !! очень очень красиво :) ха-ха

J. soo 02.05.2018 09:48

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

button.layer.masksToBounds = true

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

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

 button.clipsToBounds = true
 button.setTitle("  ", for: .normal)

Другие вопросы по теме