tvOS - UIButton 在聚焦时没有动画

Posted

技术标签:

【中文标题】tvOS - UIButton 在聚焦时没有动画【英文标题】:tvOS - UIButton doesn't animate when focused 【发布时间】:2016-01-14 23:12:38 【问题描述】:

我有一个用于 tvOS 的小型测试应用程序 - 带有两个按钮的白色背景。这些按钮是标准的UIButtons,除了设置标题文本和将titleColor 设置为黑色外,没有任何自定义。

我的UIButtons 在聚焦时不会收到阴影(或任何动画)。如果我用UITextFields 替换它们,它们会按预期获得默认的投影和动画。我可以通过添加目标并在选择按钮时打印到控制台来确认按钮 do 已成为焦点。

知道发生了什么吗? Apple's documentation、this article 和 this answer 都建议 UIButton 应该像其他可聚焦元素一样自动接收默认焦点动画。这是一个错误还是我遗漏了什么?

相关代码:

override func viewDidLoad() 
    super.viewDidLoad()

    view.backgroundColor = UIColor.whiteColor()

    let button = UIButton()
    button.setTitle("Button", forState: .Normal)
    button.setTitleColor(UIColor.blackColor(), forState: .Normal)
    button.frame = CGRectMake(500, 500, 300, 100)
    view.addSubview(button)

    let button2 = UIButton()
    button2.setTitle("Button2", forState: .Normal)
    button2.setTitleColor(UIColor.blackColor(), forState: .Normal)
    button2.frame = CGRectMake(900, 500, 300, 100)
    view.addSubview(button2)


编辑:仅在以编程方式添加 UIButtons 时才会发生这种情况 - 如果我在 Interface Builder 中添加它们,它们就会正常工作。

【问题讨论】:

【参考方案1】:

调用 UIButton() 初始化程序将为您提供一个“自定义”按钮,而您真正想要的是一个“系统”按钮,如下所示:

let button = UIButton(type: .System)

自定义按钮根本没有任何内置外观,而系统按钮有。

【讨论】:

以上是关于tvOS - UIButton 在聚焦时没有动画的主要内容,如果未能解决你的问题,请参考以下文章

tvOS UIButton .plain 样式,没有模糊背景视图

tvOS 上 UITabBarItem 的选定和聚焦状态

UIButton 在焦点上将图像更改回原始图像(tvOS)

tvos UISegmentedControl 焦点样式不变

UIButton在动画期间没有交互

带有动画图像的 UIButton 不显示