在tvOS中的UIButton自定义backgroundColor

时间:2016-01-04 08:15:17

标签: ios swift uibutton swift2 tvos

我的UIButton应用内有一个TVos我要更改backgroundColor以及titleLabel的字体。

当按钮聚焦时,文字,字体和backgroundColor应该相同,但应该显示它变为focused view

我在ViewDidLoad

中有这三行代码
   orderButton.titleLabel?.font = UIFont(name: "RobotoCondensed-Regular", size: 40)
   orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: [.Focused, .Normal])
   orderButton.setTitleColor(UIColor.whiteColor(), forState: [.Focused, .Normal])

问题

当我的视图加载时,我的按钮仍然具有默认的灰色。当它聚焦时,它会获得我在ViewDidLoad内设置的颜色。

对此有何帮助?

2 个答案:

答案 0 :(得分:2)

您必须单独指定两个状态,如此

 orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Focused)
 orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Normal)

正如文件所说

  func setBackgroundImage(_ image: UIImage?,forState state: UIControlState)

我们只有一个州时间指定

答案 1 :(得分:0)

您可以覆盖didUpdateFocusInContext方法来实现此目的。 我们假设您的按钮标记设置为1.现在您可以执行以下操作:

     override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {

        if let nextFocusedView = context.nextFocusedView {
          if button.tag == 1 {
       // Change the font and background color here for Focused state
            }
        }

    if let previousFocusView = context.previouslyFocusedView {
         if button.tag == 1 {
     // Change the font and background color here for Non-Focused state
         }
}