Скрыть заголовок 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];