隐藏 UIButton 标题

Posted

技术标签:

【中文标题】隐藏 UIButton 标题【英文标题】:Hide UIButton title 【发布时间】:2011-09-04 16:11:11 【问题描述】:

我在滚动视图中有几个 UIButtons 用于传递某些信息。该信息保存在每个 uibutton 的标题中,当单击该按钮时,它会将其标题传递给函数。

我想要做的就是隐藏按钮的标题,这样你就看不到按钮了。我将它们覆盖在用于显示按钮的图像上。我将文本设置为透明,但单击它时仍会变为白色。

如果您在解释中包含代码,请说明它应该放在哪里。

【问题讨论】:

你的意思是像myButton.hidden = YES; 吗? 如果这仍然使按钮可点击,那么是的,我会把它放在哪里?我在视图中有几个按钮 你做错了。首先,为什么不使用名称而不是使用标题来存储变量?其次,隐形按钮是一个可怕的想法,你的应用甚至可能被拒绝。第三,如果您使用图像来显示按钮,为什么不将该图像设置为按钮?四、如果你不提供任何代码,你希望我们如何解释代码应该去哪里? 【参考方案1】:

ios7之后,如果你只想隐藏一个按钮的titleLabel上的标题,你可以这样做。这样标题仍然存在,只是使它不可见。如果您执行 NSLog("%@",button.currentTitle) 您将在终端中看到标题。希望这可以帮助。

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

【讨论】:

yourButton.setTitleColor(UIColor.clearColor(), forState: .Normal) 这是唯一有效的解决方案,这样您仍然可以拥有您的标题(针对不同的州),并且您不需要保留 titleLabel 或任何其他变量【参考方案2】:

我发现只有一种正确的工作方式:

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

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

【讨论】:

【参考方案3】:

使用 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];

【讨论】:

我不理解您使用的这种语法,但 titleLabel?.removeFromSuperview() 对我有用,因为我从不想使用 titleLabel。眼不见心不烦。【参考方案4】:

我创建了一个 UIButton 的子类并覆盖了layoutSubviews 方法。在 layoutSubviews 方法中隐藏 titleLabel 有效。

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;

或将按钮的标题设置为@"",并在您要检索时将值保存在其他位置。

【讨论】:

这绝对不适用于iOS7。取决于您在视图周期中使用它的时间。【参考方案6】:

我无法从 titleLabel 或整个视图中删除标题,因为我需要它来进行约束。

我最终使用了

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

隐藏标题和

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

再次显示

【讨论】:

改变不透明度就可以了。将标题设置为 nil 也可能会更改按钮大小,这是此解决方案不会遇到的问题。【参考方案7】:

要临时隐藏标题,只需将标题设置为空字符串

setTitle("", for: .normal)

按钮标题标签将被隐藏,但标题仍会在titleLabel中,您可以使用

将其返回
setTitle(titleLabel?.text, for: .normal)

【讨论】:

【参考方案8】:

我遇到了标题问题,因为使用了属性标题,而以上没有任何帮助。然后我找到了解决方法:

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

不过它有一些缺点,但符合我的需要。

【讨论】:

【参考方案9】:

我想出了这个解决方案,它允许您设置标题标签文本并将其与按钮图像一起使用而不显示它并且不将按钮图像向左移动。

- (void)hideButtonLabel:(UIButton*)buttonInp 

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


【讨论】:

【参考方案10】:

如果您想暂时隐藏标题,同时禁用按钮,请使用:

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

然后,button.isEnabled = false,当你想隐藏标题时。

【讨论】:

【参考方案11】:

您不能使用 .hidden 属性隐藏 UIButton titleLabel。相反,您可以这样做。

隐藏:

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

显示:

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

【讨论】:

【参考方案12】:

在 Swift 中-

您不需要隐藏也不需要将不透明度设置为 0.0。 Swift 给了你一个更简单的方法。 只需将标题设置为 nil 即可。事实上,我是从文档中得到这个想法的。

命令点击setTitle(_:for:)方法你会看到-

open func setTitle(_ title: String?, for state: UIControl.State) // default is nil. title is assumed to be single line 

所以,我只是将它设置为 nil。

setTitle(nil, for: .normal)

【讨论】:

【参考方案13】:

Swift 5 隐藏按钮标签:

myButton.titleLabel?.isHidden = true

这里的 myButton 是按钮的@IBOutlet。

【讨论】:

以上是关于隐藏 UIButton 标题的主要内容,如果未能解决你的问题,请参考以下文章

隐藏导航栏时UIButton向上移动

无法隐藏以编程方式创建的 UIButton

UIButton 隐藏在 UIToolbar 后面

如何显示隐藏的 UIButton?

重新加载 UITableView 时显示隐藏的 UIButton

隐藏 UIButton 而不仅仅是删除可见性