我有一个图像视图,当包含视图获得焦点时,它将获得这个令人敬畏的tvOS焦点效果。问题是-它应该有圆角。现在这很容易做到:
imageView.layer.cornerRadius = 5
imageView.layer.masksToBounds = true
字符串
我必须将图层的masksToBounds
或图像视图的clipsToBounds
设置为true(基本上是相同的),以便剪切图像的边缘-但一旦我这样做,焦点效果就不再起作用,因为它也会被剪切。
我在按钮上也遇到了或多或少的问题,但由于对焦效果比图像视图简单得多(只有缩放和阴影),我只是自己实现了它,但这不是图像视图的选项,所有的效果都应用了(移动, Flink 等......)
有更简单的方法吗?我错过了什么吗?我不能是唯一一个想搞清楚这是怎么回事的人!?:)
3条答案
按热度按时间jum4pzuy1#
我找到了一个替代的解决办法。我们可以做的是实际绘制图像,用alpha通道裁剪掉角。然后,图像在聚焦时正确缩放。应用于图层的。然后,有阿尔法通道添加到其他层(如发光效果的一个),我们需要设置;“masksFocusEffectToContents = true”。
我为它做了一个扩展,基于这个answer:
Swift 4.2
字符串
然后应用圆角调用:
型
显然可以修改roundedImage()来添加参数,以便在调用时定义阴影。
缺点:
另外,tvOS 12(目前为beta)引入了锁定。我设法以编程方式实现了它们,如this answer所示。
wnavrhmk2#
https://forums.developer.apple.com/thread/20513
我们也面临着同样的问题。当你圆了角落,你可以看到“闪耀”仍然有一个矩形形状。
我在多伦多的技术会谈上向Dev福音派展示了这个问题,他们说这是一个bug。已报告并打开rdar://23846376
gg58donl3#
2022年2023年……
幸运的是,
TVPosterView
现在工作得很好。这可能是你最好的解决办法。只需在TVPosterView上设置
.image。 您也可以使用
UICardView`来实现效果。(在这种情况下,只需将UIImageView放在卡视图中。别忘了关闭 * 图像视图 * 上的“adjust on ancestor focus”和“user interaction enabled”,否则当卡片视图扩展时,它会“加倍扩展”!)TVPosterView
,当你玩遥控器时,你会得到“两种”的三维效果。UICardView
它是不同的,你只有“一个”的3D效果时,玩弄遥控器。试试看,看看有什么不同。不过……
TVPosterView
你会遇到一个奇怪的问题(就像仅仅是一个图像视图一样),图像不能正确地缩放,它忽略了缩放模式。UICardView
,图像将像在iOS上一样正常缩放(无论您告诉它如何缩放)