gpt4 book ai didi

objective-c - 如何在不阻塞 UI 的情况下渲染图像?

转载 作者:行者123 更新时间:2023-12-01 15:56:30 26 4
gpt4 key购买 nike

我有这个图像渲染功能,导致主/UI 线程在渲染时阻塞/卡顿。

有什么方法可以不阻塞线程并在 iOS 中的不同线程上渲染?是否有 native API 可以帮助您?

更新代码:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}

function
{
UIImage *shrinkedImage = [ThisClass imageWithImage:screenShotImage scaledToSize:shrinkImageToSize];

UIImage * rotatedImage = [[UIImage alloc] initWithCGImage: shrinkedImage.CGImage
scale: 1.0
orientation: UIImageOrientationRight];

}

谢谢

最佳答案

有很多事情你可以考虑:

  1. 使用 instruments 工具time profiler 检查什么占用了大部分时间。
  2. 使用 UIImageView 而不是 UIImage 来应用一些变换,例如旋转和变换。您需要将这些转换应用于 UIImageView 的 CALayer。
  3. 使用 GCD 在后台线程中加载图像。这是一个例子:
dispatch_queue_t preloadQueue = dispatch_queue_create("preload queue", nil);
dispatch_async(preloadQueue, ^{
UIImage *yourImage = [UIImage imageNamed:yourImageReferencePath];
dispatch_async(dispatch_get_main_queue(), ^{
yourUIView.image = yourImage});
});
dispatch_release(preloadQueue);

关于objective-c - 如何在不阻塞 UI 的情况下渲染图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555997/

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