Swift - 将背景颜色更改为透明

8
我注意到我的一个按钮的背景颜色的值为“default”。
当该按钮被突出显示时,我想要改变另一个按钮的背景颜色也为“default”。这是我目前的代码:
```html

我注意到我的一个按钮的背景颜色的值为“default”。

当该按钮被突出显示时,我想让另一个按钮的背景颜色也为“default”。以下是我的代码:

```
@IBAction func buttonTouchUpInside(_ sender: UIButton) {

    registerBtn.setTitleColor(UIColor.white, for: UIControlState.highlighted);
}

我如何做到这一点,使registerBtn的背景颜色基本透明?

我有点困惑。颜色名称为“default”吗?使用单引号?从语法上讲,这不应该起作用。此外,如果您发布的代码是针对您希望执行操作的按钮,则显然正在使用IB,那么为什么不(a)编写buttonHighlighted的代码,然后(b)在第二个按钮上设置IBOutlet并设置.backgroundColor为.touchUpInside?你知道,在写完这篇文章之后,我开始觉得你的逻辑简单地倒过来了。 - user7014451
抱歉,我的意思是在XCode的检查器面板中,按钮的背景颜色设置为默认值。而我只是一个初学Swift的人,所以您可以请用一些代码强调您的意思吗?我真正想要实现的是当按钮被突出显示时更改按钮的背景颜色。@dfd - KTOV
1
我会发布一个答案,也许这是最好的方法。如果你有问题,请在我的答案评论中提出。我会尽力在我们弄清楚事情的过程中进行编辑。 - user7014451
抱歉,我不明白为什么您不使用backgroundColor属性?像这样:registerBtn.backgroundColor = UIColor.clear,或者您可以在Storyboard中修改State Config属性为Highlighted并设置backgroundColor。 - Carolina
@Carol,我同意 - 在某种程度上。听起来希望的是当第一个按钮被突出显示时改变另一个按钮的背景颜色。如果是这样的话,就需要一些代码。 - user7014451
显示剩余3条评论
3个回答

8
在评论中我发现以下内容:
  • 两个按钮是在InterfaceBuilder (IB)中创建的。
  • 每个按钮的背景颜色在IB中设置为默认或其他颜色。
  • 当第一个按钮被突出显示时,第二个按钮的背景颜色应为透明,并且具有白色标题。

(如有需要,我会进行编辑。其中我不太确定的事情是第一个按钮失去突出显示后应该发生什么。)

如果上述是情况,则需要执行以下操作:

  • 当UIControlEventTouchDown或UIControlEventTouchDragEnter任一事件发生时,让第一个按钮执行操作。
  • 然后通过代码更改第二个按钮的背景颜色。

可能最简单的方法是不通过IB而是通过代码实现。在IB中添加按钮后,创建两个IBOutlets并使用以下代码即可:

@IBOutlet weak var firstButton: UIButton!
@IBOutlet weak var secondButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    firstButton.addTarget(self, action: #selector(highlightSecondButton), for: .touchDown)
    firstButton.addTarget(self, action: #selector(highlightSecondButton), for: .touchDragEnter)
}

func highlightSecondButton(_ sender:UIButton) {
    secondButton.setTitleColor(UIColor.white, for: UIControlState.normal)
    secondButton.backgroundColor = nil
}

你看到我的其中一个按钮背景是透明的(完全没有背景颜色),怎样能够在代码中进行更改,以使得按钮的背景颜色能为透明?如果你明白我的意思。 - KTOV
哈!今天学到了新东西——很好的知识。Swift 3将UIColor.transparentColor更改为简单的nil。我已经更新并测试了我的答案中的代码。 - user7014451
你的代码完美运行!我在想,如果我想将按钮背景颜色重置为白色,是否需要创建一个新事件来检测 touchUp 或其他什么? - KTOV
.touchDragEnter的顺序事件是.touchDragExit,但我不确定它对于.touchDown有什么作用 - 我认为你需要同时使用.touchUpInside和.touchUpOutside。 - user7014451

6

使用UIColor.clear可以使颜色透明。

苹果将其称为“默认值”而不是“透明”,这非常令人困惑。


0
Swift
button.backgroundColor = UIColor.clear

Objective-C
button.backgroundColor = [UIColor clearColor];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接