Скрыть заголовок UIButton - PullRequest
       28

Скрыть заголовок UIButton

10 голосов
/ 04 сентября 2011

У меня есть несколько кнопок UIB в просмотре прокрутки, которые я использую для передачи определенной информации.Информация сохраняется в заголовке каждого uibutton, и когда кнопка нажата, она передает свой заголовок в функцию.

Все, что я хочу сделать, это скрыть название кнопки, чтобы вы не могли видеть кнопку.Я наложил их на изображения, которые я использую, чтобы показать кнопки.У меня установлен прозрачный текст, но он по-прежнему становится белым при нажатии.

Если вы включили код в свое объяснение, объясните, куда он должен идти.

Ответы [ 10 ]

27 голосов
/ 17 октября 2014

После IOS7, если вы хотите просто спрятать заголовок на titleLabel кнопки, вы можете сделать следующее.Таким образом, название все еще там, оно просто делает его невидимым.если вы делаете NSLog ("% @", button.currentTitle), вы увидите заголовок в терминале.Надеюсь это поможет.

[button setTitle:@"Button Title" forState:UIControlStateNormal];
button.titleLabel.layer.opacity = 0.0f;
11 голосов
/ 20 декабря 2013

с использованием button.titleLabel.hidden = YES не будет работать (по крайней мере, на iOS 7).

Я использовал:

// remove the button since hiding it doesn't work
[button.titleLabel removeFromSuperview];
// put back when you're done
[button addSubview:button.titleLabel];
10 голосов
/ 22 января 2016

Я нашел только один правильный способ работы:

//hide
yourButton.setTitleColor(UIColor.clearColor(), forState: .Normal)

//show (put your color)
yourButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
3 голосов
/ 28 мая 2018

Я создаю подкласс UIButton и переопределяю layoutSubviews метод. Сокрытие titleLabel в методе layoutSubviews работает.

public class LoadingButton: UIButton {
    public var isTitleHidden: Bool = false {
        didSet {
           titleLabel?.isHidden = isTitleHidden
        }
    }
    public override func layoutSubviews() {
        super.layoutSubviews()
        titleLabel?.isHidden = isTitleHidden
    }
}

если хотите скрыть titleLabel, просто установите isTitleHidden = false

3 голосов
/ 04 сентября 2011

Вы можете скрыть метку внутри кнопки:

button.titleLabel.hidden=YES;

или установить для заголовка кнопки значение @ "" и сохранить значение в другом месте, когда вы хотите получить его.

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

Вы не можете скрыть UIButton titleLabel, используя .hidden свойство. Вместо этого вы можете сделать это.

Чтобы скрыть:

[self.yourButton setTitle:nil forState:UIControlStateNormal];

Показать:

[self.yourButton setTitle:@"Your Text" forState:UIControlStateNormal];
0 голосов
/ 10 июня 2019

Если вы хотите временно скрыть заголовок при отключении кнопки, используйте:

setTitle("Title", for: .normal)
setTitle("", for: .disabled)

Затем, button.isEnabled = false, когда вы хотите скрыть заголовок.

0 голосов
/ 22 мая 2019

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

В итоге я использовал

isEnabled = false
titleLabel?.layer.opacity = 0
setTitleColor(.clear, for: .disabled)

чтобы скрыть заголовок и

isEnabled = true
titleLabel?.layer.opacity = 1
setTitleColor(titleColor(for: .normal), for: .disabled)

чтобы показать это снова

0 голосов
/ 27 марта 2019

Я придумал это решение, которое позволяет вам устанавливать текст метки заголовка и использовать его с изображением кнопки, не показывая его и не перемещая изображение кнопки влево.

0 голосов
/ 24 декабря 2018

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

button.titleEdgeInsets = .init(top: 0, left: shouldHide ? 1000 : 0, bottom: 0, right: 0)

Однако у него есть некоторые недостатки, но они соответствуют моим потребностям.

...