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

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

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

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

Ответ 1

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

[button setTitle:@"Button Title" forState:UIControlStateNormal];
button.titleLabel.layer.opacity = 0.0f;

Ответ 2

с помощью 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];

Ответ 3

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

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

//show (put your color)
yourButton.setTitleColor(UIColor.blackColor(), forState: .Normal)

Ответ 4

Я создаю подкласс 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

Ответ 5

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

button.titleLabel.hidden=YES;

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

Ответ 6

Чтобы скрыть заголовок, просто установите пустую строку в заголовок

setTitle("", for: .normal)

метка заголовка кнопки будет скрыта, но заголовок все еще будет находиться в titleLabel, вы можете вернуть его обратно с помощью

setTitle(titleLabel?.text, for: .normal)

Ответ 7

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

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

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

Ответ 8

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

- (void)hideButtonLabel:(UIButton*)buttonInp {

    buttonInp.titleLabel.layer.opacity = 0.0f;
    uttonInp.titleLabel.font = [UIFont fontWithName:@"Helvetica-Light" size:0.0];

}

Ответ 9

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

Я в конечном итоге с помощью

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

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

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

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

Ответ 10

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

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

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

Ответ 11

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

Прятаться:

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

Показывать:

[self.yourButton setTitle:@"Your Text" forState:UIControlStateNormal];