Ios 英雄动画启动延迟
我正在尝试实现两个控制器之间的转换,其中包含一个导航控制器。 我有这个方法来处理平移手势:Ios 英雄动画启动延迟,ios,swift,animation,Ios,Swift,Animation,我正在尝试实现两个控制器之间的转换,其中包含一个导航控制器。 我有这个方法来处理平移手势: @objc func pannedCell(gesture: UIPanGestureRecognizer) { guard let animatedView = gesture.view as? HotelListingCollectionViewCell else { return } let translation = gesture.translation(
@objc func pannedCell(gesture: UIPanGestureRecognizer) {
guard let animatedView = gesture.view as? HotelListingCollectionViewCell else {
return
}
let translation = gesture.translation(in: nil)
let screenHeight = self.rootView.bounds.height
let progress = ((-1 * translation.y) / screenHeight) * 2
print(progress)
switch gesture.state {
case .began:
self.initialViewPostion = animatedView.center
Hero.shared.defaultAnimation = .fade
let vc = ListingSearchViewController()
vc.viewModel.hotels.value = self.viewModel.hotels.value
self.navigationController?.pushViewController(vc, animated: true)
case .changed:
Hero.shared.update(progress)
let pos = CGPoint(
x: animatedView.center.x + translation.x,
y: self.rootView.hotelResultsCollectionView.center.y + translation.y
)
Hero.shared.apply(modifiers: [
.position(pos),
.useGlobalCoordinateSpace,
.useOptimizedSnapshot
], to: animatedView)
default:
if progress > 0.8 {
Hero.shared.finish()
} else {
Hero.shared.cancel()
}
}
}
这里的问题是执行pushViewController方法需要约1秒的时间,因此当我开始拖动视图时,它会在我开始在屏幕上移动手指约1秒后移到我的手指下
我做错了
谢谢好的,我想我找到了什么 这个问题似乎与我在一个手势处理程序的案例中所做的操作有关 我将新视图控制器的实例化从这个回调中移出,以避免在动画期间使UI线程过载,并且一切似乎都按预期工作