我有一些UIImageView
s我想要打开parralex-touch-remote-drag-effect-thing,但它扩展的默认大小会重叠设计中的其他一些内容。所以我希望能够设置它扩展到的帧的大小。
在使用adjustsImageWhenAncestorFocused
之前,我可以通过以下方式做到这一点:
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocus(in: context, with: coordinator)
coordinator.addCoordinatedAnimations({
let focusScaleFactor: CGFloat = 1.1
let scale = CATransform3DMakeScale(focusScaleFactor, focusScaleFactor, 1.0)
let ty = -imageView.frame.size.height * (focusScaleFactor - 1.0) * 0.5
imageView.layer.transform = CATransform3DTranslate(scale, 0.0, ty, 0.0)
imageView.layer.shadowOffset = CGSize(width: 5.0, height: 5.0)
imageView.layer.shadowRadius = 8.0
})
}
但是当用户在远程触摸板上进行小动作时,它没有视差效果。
要使用adjustsImageWhenAncestorFocused
我已覆盖UIImageView
及其focusedFrameGuide
媒体资源。但永远不会访问或使用focusedFrameGuide
属性 - 正如它在文档中所述:https://developer.apple.com/documentation/uikit/uiimageview/1627692-adjustsimagewhenancestorfocused
我做错了吗?
这是我现在使用的自定义UIImageView
:
import UIKit
class MyImageView: UIImageView {
override var adjustsImageWhenAncestorFocused: Bool {
get {
print("This is called.")
return true
}
set {}
}
override var focusedFrameGuide: UILayoutGuide {
print("This is never called.")
let layoutGuide = UILayoutGuide()
layoutGuide.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 1.5)
layoutGuide.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1)
return layoutGuide
}
}
为什么永远不会访问focusedFrameGuide
?