gpt4 book ai didi

ios - 亮度控制 slider 在 iOS 中的响应速度非常慢

转载 作者:行者123 更新时间:2023-11-28 19:07:30 25 4
gpt4 key购买 nike

我真的需要帮助。

我正在创建简单的图像处理应用程序,我从相机胶卷加载图像或拍照。我有一个亮度控件( slider ),可以调整图像的亮度。问题是 slider 在模拟器上实时工作,但在 ipad 上有很小的响应延迟。我已经尝试了一切,但似乎没有任何运气。

请帮忙。我见过其他应用程序, slider 可以毫无延迟地顺利运行。我做错了什么?

谢谢

最佳答案

我将对最初问题中遗漏的一些事情进行猜测。

1)澄清一下,问题是: slider 的移动不流畅。2) 此外,由于或与此 UI 粗糙度相结合,图像更改会出现延迟。

我不确定您的实现是什么样的,但是,听起来您在主线程上做了太多工作和/或太多了。

因此,这是一个正常运行的实现可能会做的事情:

- (void)sliderChanged:(UISlider *)sender
{
[self adjustImageBrightnessWithValue:sender.value;
}

- (void)adjustImageBrightnessWithValue:(CGFloat)value
{
[self cancelCurrentWork]; // Maintain a reference to an operation and cancel it
[self adjustImageBrightnessAsyncWithValue:(CGFloat)value originalImage:self.imageView.image completion:^(UIImage *finalImage)
{
self.imageView.image = finalImage;
}
}

adjustImageBrightnessAsyncWithValue 接受一个值、原始图像和完成 block 。它创建一个操作(通过 NSOperation 或 NSOperationQueue,可能两者都有)并跟踪该操作。该操作将算法应用于背景中的原始图像。完成后,完成 block 将在主线程上的 ImageView 中设置最终图像。

在主线程上发生的唯一事情是:获取 slider 更改回调、取消之前的工作、开始新工作以及设置最终图像。其他一切都应该在后台发生。取消工作是针对用户移动 slider 太快而无法在值再次更改之前修改图像的情况的优化。一旦 slider 的变化时间不足以进行修改,结果就会可见。 slider 应始终平滑,因为没有任何东西阻塞主线程。

编辑

使用操作队列...声明一个成员变量:

NSOperationQueue *m_queue;

...

在 init 方法中初始化它:

m_queue = [NSOperationQueue new];
m_queue.maxConcurrentOperationCount = 1; // So it only does one brightness calculation at a time and there are no concurrency issues.

...

- (void)adjustImageBrightnessWithValue:(CGFloat)value
{
[m_queue cancelAllOperations];
[m_queue addOperationWithBlock:^
{
UIImage *adjustedImage = [mainimage brightness:value]; // Not sure where this method is coming from, but this code assumes it returns a copy of mainimage with the brightness adjusted.
dispatch_async(dispatch_get_main_queue(), ^
{
imageview.image = adjustedImage;
});
}];
}

另外,顺便说一句,您可以看一下 GPUImage,在这里讨论:http://nshipster.com/gpuimage/用于众多快速、强大的图像修改技术/API。

关于ios - 亮度控制 slider 在 iOS 中的响应速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18991489/

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