Как удалить выбранный UIButton цвет фона? - PullRequest
34 голосов
/ 09 января 2012

Я ищу решение этой проблемы, которое НЕ требует использования изображений / PNG.Я ищу способ удалить синий фоновый цвет UIButton, когда он находится в выбранном состоянии, и я просто не могу найти способ сделать это без использования изображений.Я в основном пытаюсь сделать что-то подобное в случае UITableViewCell:

   cell.selectionStyle = UITableViewCellSelectionStyleNone;

Ответы [ 10 ]

111 голосов
/ 27 декабря 2013

У меня была такая же проблема, и я решил ее, изменив тип UIButton с «System» на «Custom».Синий цвет фона не отображается в выбранном состоянии, когда он имеет тип «Пользовательский».

17 голосов
/ 09 января 2012

К сожалению, на данный момент я не на своей тестовой машине, но есть две вещи, которые вы можете попробовать.

Сначала нужно установить следующее свойство:

button.adjustsImageWhenHighlighted = NO;

Или снимите флажок «Подсветка настраивает изображение» в Интерфейсном Разработчике.

Если это не сработает так, как вы ожидаете, вы можете отменить выбор кнопки в действии, к которому вы ее привязали, например:

- (IBAction)yourButtonAction:(id)sender {
    [sender setHighlighted:NO];
}
9 голосов
/ 23 января 2013

Измените альфа-значение tintColor на ноль, работает, если iOS версии 5.0 или более поздней

UIColor *color = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];  
button.tintColor = color;
5 голосов
/ 20 ноября 2017

Очень просто, в storyBoard выберите UIButton и откройте attribute inspector. Теперь прокрутите вниз до раздела View и измените свойство Tint на Clear Color или любой другой цвет, если хотите.

enter image description here

4 голосов
/ 21 июля 2017

UIB кнопка также с типом custom, мы можем установить его в xcode as-

enter image description here

ИЛИ Byпрограммно as-

 let customButton = UIButton(type: .custom) 
  customButton.setTitle("this is Button", for: .normal)
  customButton.setTitleColor(UIColor.blue, for: .normal)
  customButton.frame = CGRect(x: 15, y: 50, width: 300, height: 500)
            self.view.addSubview( customButton)

Теперь больше нет синего цвета фона UIButton

1 голос
/ 07 мая 2017

Что это для меня сделало, изменив button.tintColor в выделенном состоянии.Это Swift 3, iOS 10

override public var isHighlighted: Bool {
    didSet {
        self.tintColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0)
    }
}

Или вы можете сделать то же самое в конструкторе интерфейсов

Выбрать состояние кнопки

Выберите цвет оттенка кнопки

0 голосов
/ 12 июля 2019

Не прямой ответ на вопрос ОП, но удалить этот цвет в подклассе UIButton вы можете следующим образом:

override func layoutSubviews() {
    tintColor = .clear
    super.layoutSubviews()
}
0 голосов
/ 24 октября 2016

Swift Version

extension UIButton {
    override public var highlighted: Bool {
        didSet {
            // clear background color when selected
            self.layer.backgroundColor = .None
        }
    }
}
0 голосов
/ 09 января 2012

Не уверен, что это лучший способ.Но вы могли бы иметь невидимую кнопку или вид сверху фактической кнопки, а затем распознать, когда была нажата верхняя кнопка / вид.

0 голосов
/ 09 января 2012

Использовать ...

    [myButton setAdjustsImageWhenHighlighted:FALSE];
...