tvOS:如何制作一个圆形按钮,在聚焦时仍然会出现阴影?

bry*_*ark 7 uibutton uikit tvos

在tvOS上,系统类型UIButton在聚焦时获得整洁的阴影效果.

我想得到这个效果,但是圆润了UIButton.到目前为止,我尝试过以下方法:

  1. 我尝试用' layer.cornerRadius诀窍'来绕过角落- 但这不起作用; 按钮是圆形的,但它们在聚焦时不会抬起视图(因为它们会剪切到边界):

    button.layer.cornerRadius = button.size.width / 2.0
    button.clipsToBounds = true
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我尝试过设置圆形背景图像 - 但现在按钮后面出现了奇怪的背景颜色或阴影:

    button.setBackgroundImage(myCircularImage, forState: .Normal)
    
    Run Code Online (Sandbox Code Playgroud)

    这是选项2的样子(注意:红色按钮当前是聚焦的): 红色按钮聚焦,背景阴影很奇怪

还有什么我可以尝试UIButton(type: .System)免费获得Focus Engine的阴影效果吗?或者我是否需要为此编写更多自定义内容?

bry*_*ark 7

我本月在西雅图举行的tvOS会谈上与苹果工程师进行了交谈 - 目前无法获得圆形UIButton的系统标准聚焦行为(视差,运动效果,光泽等) - 这是一个无赖!

他们建议我改变设计,或者为UIButton编写我自己的焦点/视差/运动效果.我不急于自己编写 - 可能无法完全复制系统标准效果,并且当平台将来发生变化时,自定义效果可能看起来过时了.

更新:我写了一篇博文,其中包含了实现此效果的示例代码:http://www.devsign.co/notes/custom-focus-effects-in-tvos

完成的产品

  • 感谢您捕获代码块格式化的东西!我已经修正了那篇文章的降价.如果来源没有意义,你也可以在这里查看回购:https://github.com/bryanjclark/devsign-CustomFocusEffect (2认同)