gpt4 book ai didi

ios - 如何在 iOS 上创建一个可工作的可中断 View Controller 转换?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:36 24 4
gpt4 key购买 nike

iOS 10 为自定义动画 View Controller 转换添加了一个新函数,称为 interruptibleAnimator(using:)

很多人似乎都在使用新功能,但是通过在 interruptibleAnimator(using:)(参见 Session 216 from 2016)

但是,我找不到一个实际使用可中断动画师创建可中断过渡的示例。每个人似乎都支持它,但实际上没有人使用它。

例如,我使用 UIPanGestureRecognizer 在两个 UIViewController 之间创建了自定义转换。两个 View Controller 都有一个 backgroundColor 集,中间有一个 UIButton,用于更改 touchUpInside 上的 backgroundColour。

现在我简单地实现了动画:

  1. 设置 toViewController.view 定位到的左/右(取决于所需的方向)来自ViewController.view

  2. 在 UIViewPropertyAnimator 动画 block 中,我滑动toViewController.view 进入 View ,fromViewController.view 出来 View (屏幕外)。

现在,在转换期间,我希望能够按下那个 UIButton。但是,没有调用按钮按下。奇怪,这就是 session 暗示的事情应该如何工作,我将自定义 UIView 设置为我的两个 UIViewControllers 的 View ,如下所示:

class HitTestView: UIView {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
if view is UIButton {
print("hit button, point: \(point)")
}
return view
}
}

class ViewController: UIViewController {

let button = UIButton(type: .custom)

override func loadView() {
self.view = HitTestView(frame: UIScreen.main.bounds)
}
<...>
}

并注销func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? 结果。 UIButton 正在接受 hitTested,但是按钮操作未调用

有人成功了吗?

我是不是想错了,可中断的过渡只是为了暂停/恢复过渡动画,而不是为了交互?

几乎所有的 iOS11 都使用了我认为是可中断的转换,例如,允许您将控制中心拉到 50% 的位置并与之交互 而无需释放控制中心 Pane 然后滑动它退缩了。这正是我想要做的。

提前致谢!今年夏天花了很长时间试图让它发挥作用,或者找其他人尝试做同样的事情。

最佳答案

我已经发布了示例代码和一个可重复使用的框架,用于演示可中断的 View Controller 动画转换。它叫做PullTransition只需向下滑动即可轻松关闭或弹出 View Controller 。如果文档需要改进,请告诉我。希望对您有所帮助!

关于ios - 如何在 iOS 上创建一个可工作的可中断 View Controller 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com