tvOS 中的 UIButton 自定义背景颜色
UIButton custom backgroundColor in tvOS
我的 TVos
应用程序中有一个 UIButton
,我想在其中更改 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
.
中设置的颜色
有什么帮助吗?
你必须分别指定两个状态,像这样
orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Focused)
orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Normal)
正如文档所说
func setBackgroundImage(_ image: UIImage?,forState state: UIControlState)
我们一次只能指定一个状态
您可以覆盖 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
}
}
我的 TVos
应用程序中有一个 UIButton
,我想在其中更改 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
.
有什么帮助吗?
你必须分别指定两个状态,像这样
orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Focused)
orderButton.setBackgroundImage(getImageWithColor(UIColor(rgba: "#1db5b5")), forState: .Normal)
正如文档所说
func setBackgroundImage(_ image: UIImage?,forState state: UIControlState)
我们一次只能指定一个状态
您可以覆盖 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
}
}