gpt4 book ai didi

ios - 如何在该 View 内为图像设置动画时捕获 UIView 快照

转载 作者:行者123 更新时间:2023-12-01 17:52:26 25 4
gpt4 key购买 nike

一个 UIView包含动画图像 (UIImage)。

我想使用 renderInContext:UIGraphicsGetCurrentContext 在循环中截取父 View 的屏幕截图

在捕获父 View (previewContainer) 的屏幕截图时,它不会将图像捕获为动画。

每次只捕获 View 中图像的最后一个位置(将显示在 thmbView 中)。

捕获代码

- (void) startCapturing{

UIGraphicsBeginImageContext(previewContainer.frame.size);
[previewContainer.layer renderInContext:UIGraphicsGetCurrentContext()];
thmb.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


double delayInSeconds = 0.2;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
if (sec++ < 15) {
[self startCapturing];
}
});}

动画代码
- (void) animate{
CABasicAnimation * appearance =[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
[appearance setValue:@"animation1" forKey:@"id"];
appearance.delegate = self;
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];
appearance.duration = 10;
appearance.fromValue = [NSNumber numberWithFloat:0];
appearance.toValue = [NSNumber numberWithFloat:340];
appearance.repeatCount = 1;
appearance.fillMode = kCAFillModeForwards;
appearance.removedOnCompletion = NO;
[imgPreview.layer addAnimation:appearance forKey:@"transform.translation.y"];

}

最佳答案

在可以渲染表示层的 View 中截取动画的唯一方法。

而不是这条线

[previewContainer.layer renderInContext:UIGraphicsGetCurrentContext()];

用这个
[previewContainer.layer.presentationLayer renderInContext:UIGraphicsGetCurrentContext()];

关于ios - 如何在该 View 内为图像设置动画时捕获 UIView 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25511339/

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