Ios 在电视操作系统上显示UITextView的聚焦效果?
当焦点在Apple TV上的任何媒体应用程序(应用商店、电影、电视节目等)中更改为UITextView时,它会突出显示如下效果: 它会弹出一个阴影,然后在触摸板上滚动你的拇指,给它带来光滑的3D效果。它很像聚焦的UIButton,或者像UICollectionViewCell一样包含为聚焦视图的子视图的UIImageView 使用UIButton,如果它是使用UIButtonType.System类型初始化的,则它在聚焦时获得聚焦外观,而无需任何操作 使用聚焦视图中的UIImageView,可以设置Ios 在电视操作系统上显示UITextView的聚焦效果?,ios,uikit,uitextview,tvos,focus-engine,Ios,Uikit,Uitextview,Tvos,Focus Engine,当焦点在Apple TV上的任何媒体应用程序(应用商店、电影、电视节目等)中更改为UITextView时,它会突出显示如下效果: 它会弹出一个阴影,然后在触摸板上滚动你的拇指,给它带来光滑的3D效果。它很像聚焦的UIButton,或者像UICollectionViewCell一样包含为聚焦视图的子视图的UIImageView 使用UIButton,如果它是使用UIButtonType.System类型初始化的,则它在聚焦时获得聚焦外观,而无需任何操作 使用聚焦视图中的UIImageView,可
AdjustSimageWhennancestorFocused
,当视图聚焦时,它获得聚焦外观
但无论是UITextView还是UILabel,在被选中时都不会自动设置样式,或者在关注祖先时具有调整外观的属性
所以我想知道我该怎么做。苹果是否提供了这样的聚焦文本视图显示方式?据我所知,您所描述的“光泽3D效果”只能通过使用UIImageView.AdjustSimageWhenConstorisFocused来访问。几乎不可能重现你自己 基于此,我猜效果是通过将视图与聚焦时自身的UIImage副本重叠来实现的。或者苹果可以访问一个低级别的API来实现你我都无法访问的光泽3D效果 因此,尝试以下方法:
class CustomTextView:
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
if (isFocused){
if (self.imageOverlay != nil) {
let imageView: UIImageView = self.toImageView() // many ways to achieve this. Ex: see UIGraphicsBeginImageContext()
imageView.frame = bounds
imageView.adjustsImageWhenAncestorIsFocused = true
imageView.clipsToBounds = false
self.imageOverlay = imageView
addSubview(imageView)
}
}
else{
coordinator.addCoordinatedAnimations(... completion:{
if (!self.isFocused){
self.imageOverlay.removeFromSuperview()
self.imageOverlay = nil
}
})
}
super.didUpdateFocus( in:context, with:coordinator )
}
UIImageView.adjustsImageWhenAncestorIsFocused效果还包括平移时的缩放、阴影和反馈/视差。它们既不是可移动的,也不是可配置的
或者,尝试在TVUIKit中使用各种锁定视图。也许其中一个或多个具有内置的光泽3D效果。我还没有用它们做过实验。使用运动效果似乎很难做到,请看类似的问题,这可能就是为什么苹果这样做时它看起来是静态的。然后点击“显示更多”打开全屏描述。