【问题标题】:How to remove UIButton selected background color?如何删除 UIButton 选定的背景颜色?
【发布时间】:2012-02-06 02:45:45
【问题描述】:

我正在寻找一个不需要使用图像/PNG 的解决方案。我正在寻找一种在 UIButton 处于选定状态时删除其蓝色背景颜色的方法,而我只是找不到不使用图像的方法。在UITableViewCell的情况下,我基本上是在尝试做类似的事情:

   cell.selectionStyle = UITableViewCellSelectionStyleNone;

【问题讨论】:

  • 哇,刚刚在自定义按钮上尝试了所有这些答案,但没有一个可以工作。

标签: ios objective-c iphone uibutton uikit


【解决方案1】:

使用...

    [myButton setAdjustsImageWhenHighlighted:FALSE];

【讨论】:

    【解决方案2】:

    很遗憾,我目前不在测试机旁,但您可以尝试两件事。

    首先是设置以下属性:

    button.adjustsImageWhenHighlighted = NO;
    

    或者在 Interface Builder 中取消选中“突出显示调整图像”。

    如果这不像您期望的那样工作,您可以取消选择您绑定到的操作中的按钮,如下所示:

    - (IBAction)yourButtonAction:(id)sender {
        [sender setHighlighted:NO];
    }
    

    【讨论】:

    • 这样做但不是以一种干净的方式 - 当我单击时,您仍然会在短时间内看到蓝色。我希望找到一个解决方案,可以完全消除这种情况。
    • 那你为什么不创建自己的UIControl?这并不难。然后,您可以随心所欲地对其进行自定义。
    • 还是很好用,ios:9.3,button.adjustsImageWhenHighlighted = NO 就够了。
    • 我将UIButtontintColor 属性设置为clear,它在选择时移除了背景蓝色
    【解决方案3】:

    不确定这是否是最好的方法。但是您可以在实际按钮的顶部有一个不可见的按钮或视图,然后识别顶部按钮/视图何时被点击。

    【讨论】:

      【解决方案4】:

      将 tintColor 的 alpha 更改为零,适用于 iOS 5.0 或更高版本

      UIColor *color = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];  
      button.tintColor = color;
      

      【讨论】:

      • 这会使按钮文本闪烁
      • 增加 CPU 用于混合
      • 你可以在 Swift 5 中设置button.tintColor = .clear
      • 如果tintColor 是明确的,那么一旦按钮的state 被设置为selected,文本将不可见。
      【解决方案5】:

      我遇到了同样的问题,我通过将 UIButton 类型从“系统”更改为“自定义”来解决它。当它是“自定义”类型时,蓝色背景颜色不会显示在选定状态。

      【讨论】:

      • 简单,但它消除了触摸时的漂亮褪色。 :(
      • @KyleClegg 只需更改突出显示的颜色,它应该会在触摸时褪色为该颜色。
      【解决方案6】:

      斯威夫特版

      extension UIButton {
          override public var highlighted: Bool {
              didSet {
                  // clear background color when selected
                  self.layer.backgroundColor = .None
              }
          }
      }
      

      【讨论】:

        【解决方案7】:

        它对我来说是在突出显示状态下更改 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)
            }
        }
        

        或者你可以在界面生成器中做同样的事情

        Choose button state

        Choose button tint color

        【讨论】:

          【解决方案8】:

          UIButton 也有custom 类型,我们可以在xcode 中设置为-

          通过以编程方式-

           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 的蓝色背景色

          【讨论】:

            【解决方案9】:

            很简单,在storyBoard中,选择你的UIButton并打开attribute inspector。现在向下滚动到View 部分并将Tint 属性更改为Clear Color 或任何您想要的特定颜色。

            【讨论】:

            • 我知道你的回答是正确的,但不幸的是,更新 Xcode 后,这不适用于新版本的 Xcode 13。你能解释一下新 Xcode 发生了什么吗?我想同时删除背景颜色和色调颜色,因为我在大 uiview 顶部有一个按钮。!
            【解决方案10】:

            不是对 OP 问题的直接回答,而是要在 UIButton 子类中删除此颜色,您可以这样做:

            override func layoutSubviews() {
                tintColor = .clear
                super.layoutSubviews()
            }
            

            【讨论】:

              【解决方案11】:

              在 IB 中将 UIButton 类型更改为自定义对我有用。

              【讨论】:

                猜你喜欢
                • 2014-04-18
                • 2011-09-29
                • 1970-01-01
                • 2021-11-04
                • 1970-01-01
                • 2022-01-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多