- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有摄像头的 ViewController,用于录制视频。顶部有一个旋转的圆圈,表示正在录制视频。这是这样设置的:
class CameraViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
private var animator: UIViewPropertyAnimator?
@objc func handleTap(_ gesture:UITapGestureRecognizer) {
if animator == nil {
createAnimation()
}
startRecording()
}
private func createAnimation() {
animator = UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 4, delay: 0, options: [.curveLinear,.allowUserInteraction], animations: {
UIView.animateKeyframes(withDuration: 4, delay: 0, animations: {
UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 1.0 / 3.0) {
self.recordingSpinner.transform = .init(rotationAngle: .pi * 2 * 1 / 3)
}
UIView.addKeyframe(withRelativeStartTime: 1.0 / 3.0, relativeDuration: 1.0 / 3.0) {
self.recordingSpinner.transform = .init(rotationAngle: .pi * 2 * 2 / 3)
}
UIView.addKeyframe(withRelativeStartTime: 2.0 / 3.0, relativeDuration: 1.0 / 3.0) {
self.recordingSpinner.transform = .identity
}
})
}, completion: { [weak self] _ in
self?.createAnimation()
})
}
func startRecording() {
if movieOutput.isRecording == false {
animator?.startAnimation()
let connection = movieOutput.connection(with: AVMediaType.video)
if (connection?.isVideoOrientationSupported)! {
connection?.videoOrientation = currentVideoOrientation()
}
if (connection?.isVideoStabilizationSupported)! {
connection?.preferredVideoStabilizationMode = AVCaptureVideoStabilizationMode.auto
}
let device = activeInput.device
if (device.isSmoothAutoFocusSupported) {
do {
try device.lockForConfiguration()
device.isSmoothAutoFocusEnabled = false
device.unlockForConfiguration()
} catch {
print("Error setting configuration: \(error)")
}
}
let outputFileName = NSUUID().uuidString
let outputFilePath = (NSTemporaryDirectory() as NSString).appendingPathComponent((outputFileName as NSString).appendingPathExtension("mov")!)
movieOutput.startRecording(to: URL(fileURLWithPath: outputFilePath), recordingDelegate: self)
}
else {
stopRecording()
}
}
func stopRecording() {
if movieOutput.isRecording == true {
animator?.pauseAnimation()
movieOutput.stopRecording()
}
}
@IBAction func unwindToCamera(sender: UIStoryboardSegue) {
}
...
}
extension CameraViewController: AVCaptureFileOutputRecordingDelegate{
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
if (error != nil) {
print("Error recording movie: \(error!.localizedDescription)")
} else {
self.footageURL = outputFileURL as URL
//print(self.videoRecorded!)
self.performSegue(withIdentifier: "TrimFootage_Segue", sender: nil)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
if segue.identifier == "TrimFootage_Segue" {
let controller = segue.destination as! TrimFootageViewController
controller.footageURL = self.footageURL
}
}
}
因此,如果它不存在,它会创建一个动画师,然后调用启动动画的 startRecording。然后 stopRecording 停止它。然后,当视频完成录制到输出文件时,它会转到一个新的 View Controller 。当我按回那个 View Controller 时,它使用一个展开的 segue - unwindToCameraWithSender:
当我放松并回到相机前时,视频并未录制,但动画正在播放。是什么导致这个动画重新开始?我怎样才能防止这种情况发生?
最佳答案
我认为只是动画暂停是原因。在 stopRecording()
方法中尝试
动画师?.stopAnimation(true)
代替
动画师?.pauseAnimation()
关于ios - 后退按钮启动 UIViewPropertyAnimator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845320/
我在 Factory 类中有此代码以返回 UIViewPropertyAnimators 以在何时何地使用: class AnimatorFactory { @discardableResul
当用户点击 UIView 时,我尝试为 UIView 和 imageView 制作动画。这是我的代码: // When the user taps on the featured story imag
我查看了以下 StackOverflow 问题的答案,但似乎没有一个对我有用:在执行完成 block 时,程序没有再次执行动画,而是无限地喷出“完成”广告动画 View 。 How can I rep
帮我弄清楚在这种情况下发生了什么: 假设您有一个具有以下属性的 View Controller @IBOutlet weak var blurView: UIVisualEffectView! var
我有一个带有摄像头的 ViewController,用于录制视频。顶部有一个旋转的圆圈,表示正在录制视频。这是这样设置的: class CameraViewController: UIViewCont
大家好! 我的应用程序有问题。我正在使用 UIViewPropertyAnimator 为我的模糊设置动画。我让模糊效果从 nil (0) 运行到 .light (1),但是因为光效太多了,我将 UI
我弄乱了 UIViewPropertyAnimator 的文档我希望找到一种方法来组合两个 UIViewPropertyAnimator。 像这样: let firstAnimator = UIVie
我有一个运行完美的简单脉冲动画 UIView.animate(withDuration: 1, animations: { myAnimatableView.transform = CGAff
UIViewPropertyAnimator 对于修改 View 的变换、alpha 等非常方便。但是,有时您希望为 CAShapeLayer 路径或 设置动画UIImageView 图像变化。有什么
当 UIViewPropertyAnimator 执行动画过程时如何增加值?当我将对象设置为运动时,我想在它落在屏幕上时增加它的值,但我不确定如何将其与我的动画器链接。有什么建议么?这是我启动的方式
来自苹果文档 pausesoncompletion Because the completion handler is not called when this property is true, y
我正在寻找一种方法来将一些动画添加到 UIViewPropertyAnimator 中,它比其他动画更早完成。UIViewPropertyAnimator 例如有一个方法,您可以在其中添加延迟动画 a
我正在尝试通过屏幕触摸来控制动画 当我触摸屏幕然后 View 的 alpha 变为 0 但是如果在 alpha 变为 0 时再次触摸 然后 alpha 再次变为 1(中断动画使 alpha 值为 0)
我正在使用 UIViewPropertyAnimator 来运行数组交互式动画,我遇到的一个问题是,每当我反转动画时,我都无法再次向前运行动画。 我使用三个函数与平移手势识别器一起处理动画。 priv
使用 UIView.animate: 方法,我们可以配置选项并使其成为 [.autoreverse,.repeat]。 这是一个简单的动画: @IBOutlet weak var v1: UIView
我正在尝试让我的动画让屏幕从黑变白再变黑,并重复一定次数。目前使用我的代码,动画从黑色缓和到白色,然后跳回黑色。无论如何要反向运行动画或添加在第一个动画完成后运行的动画? override func
我没有经常使用 UIViewPropertyAnimator(仍然是一个老式的 block 家伙),我看到了一些我无法解释的行为,而且文档并没有真正提供任何见解上。 为什么即使动画师在启动后立即暂停,
我有一个 UIImageView,它可以拉伸(stretch)屏幕的宽度,我正在为其尾端和前端设置动画以在屏幕中间相遇。它所花费的时间与计时器有关。 我有一个开始按钮,它也可以用作暂停按钮。我可以让动
问题描述 我有一个 UIViewPropertyAnimator 管理模糊等,我只想将它用于它的 fractionComplete 属性。问题是,如果我将 fractionComplete 设置为 1
问题描述 我有一个 UIViewPropertyAnimator 管理模糊等,我只想将它用于它的 fractionComplete 属性。问题是,如果我将 fractionComplete 设置为 1
我是一名优秀的程序员,十分优秀!