tvOS:设置adjustsImageWhenAncestorFocused不会导致使用focusedFrameGuide

时间:2017-09-21 15:39:10

标签: tvos

我有一些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

0 个答案:

没有答案