【问题标题】:Can I change the properties of all the buttons in my Swift app?我可以更改 Swift 应用程序中所有按钮的属性吗?
【发布时间】:2015-04-26 10:40:27
【问题描述】:

我有一个 Swift 应用程序,它可以在许多视图控制器中导航,所有视图控制器都具有相似的外观。每个视图控制器中都有我没有为其创建 IBOutlet 属性的按钮(它们都只是通过 Interface Builder 触发 segues)。

是否有一种简单的方法可以更改应用程序中所有按钮的背景颜色或文本颜色,而不需要为 IB 中的每个按钮更改它,或者为每个按钮创建一个 IBOutlet?

【问题讨论】:

  • 我现在所做的是为所有按钮创建一个 IB Outlet Collection 并编写代码来更改它们。但我想知道我是否可以使用外观代理?

标签: ios uibutton


【解决方案1】:

以下是简化操作的基本步骤,在您的情况下,必须对每个 viewController 重复此操作。

  1. 为所有按钮创建一个插座:

    @IBOutlet var myButtons: [UIButton]!
    
  2. 将此插座与视图上的每个按钮连接(拖动)。单击界面中的每个按钮,然后查看connections inspector 中的“参考出口集合”(最后一个按钮带有圆圈中的箭头)。请注意,它们都应该链接到myButtons

  3. 在 for 循环中设置按钮样式:

    for button in self.myButtons {
        button.backgroundColor = UIColor.clearColor()
        button.layer.borderWidth = 1
        button.layer.borderColor = UIColor.greenColor().CGColor
    }
    

要使此工作应用程序更广泛,您有几个选项可供调查。您可以使用常量,因此至少当您希望更改样式时,您只需修改一个文件:Constants in Objective-CGlobal constants file in Swift

另外,有几种方法可以公开函数。我将尝试获取一些示例代码,但是一个名为 buttonStyle 的类对于每个 viewController 可能很重要,并在 for 循环中调用:[buttonStyle styleButton:button]styleButton 函数将设置样式(我还没有对此进行任何测试)。

查看@zisoft 的答案:How to loop through Outlets of a UIViewController with Swift,这是一个更详细的日志!。

【讨论】:

    【解决方案2】:

    转到您的 appDelegate,然后更改(这只会更改文本颜色):

    let buttonAppearance = UIButton.appearance()
        buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0)
    

    这将赋予所有按钮所需的文本颜色。 你可以对 navigationBar、tabBar 等做同样的事情......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 2015-10-18
      • 2011-07-29
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多