0

我正在通过UIViewControllerAnimatedTransitioning. 作为过渡的一部分,我将 aCGAffineTransform应用于from view controller.

一旦应用了转换,fromViewController 就会失去其顶部的 safeAreaInset。这看起来很刺耳。

这是过渡开始之前的照片。正常状态栏、导航栏和安全区域插图(顶部)。高约88点。 标准状态栏和导航栏

这是过渡的第一帧。请注意,顶部间距现在更像 44 磅。 在此处输入图像描述

fromVC 在整个过渡过程中一直保持这种方式。我尝试了不同的应用转换方式,但它们的行为方式都相同。我还删除了圆角。

以下是变换:

var transform = CGAffineTransform.identity
            transform.concatenating(CGAffineTransform.identity.translatedBy(x: 0, y: yInset / 2))
            transform.concatenating(CGAffineTransform.identity.scaledBy(x: scaleX, y: scaleY))

fromVC.view.transform = transform
4

1 回答 1

0

我最终解决这个问题的方法是使用CATransform3D而不是CGAffineTransform. 使用这种技术,填充保持在原位。

let scale = CATransform3DScale(CATransform3DIdentity, scaleX, scaleY, 1)
let translate = CATransform3DTranslate(scale, 0, yInset / 2, 0)
return CATransform3DConcat(scale, translate)

在此处输入图像描述

于 2020-06-05T23:11:49.317 回答