声明
ScrollView 中的图像在 ScrollView 滚动时将获得颜色,并在滚动结束或不滚动后变为灰度。
ScrollView 中的内容
ScrollView 将 UIView
和 UIImage
作为直接后代。图像可能包含在每个 UIView
中,也可能不包含。每个 UIView
可能有文本、文本和图像以及图像。
图像分辨率
图像分辨率会很小,例如 300x150、450x150
我们做了什么?
我们遇到了GPUImage框架由 Brad Larson .该框架至少可以说令人印象深刻,我们一直对框架提供的一切着迷。
我们对框架性能的初步测试令人满意。
我们已经设法使用 GPUImageGrayscaleFilter
将图像插入到 ScrollView 中时将其转换为灰度图像。
优化
我们决定对 ScrollView 中可见的图像应用过滤器。这将大大减少负载
我们现在卡在哪里了?
有两种方法可以让图像恢复颜色
GPUImageGrayscaleFilter
。 我们无法做到这一点。UIImage
并插入原始图像。正在使用 NSURLRequestReturnCacheDataElseLoad
的缓存策略下载图像。 插入下载的图片不会有问题。无论哪种方式,我们都会应用过滤器并多次插入相同的图像。我们不确定这部分。我们错过了一个简单的技巧吗?
我要提前感谢大家的时间和回复
我能够使用 GPUImage 实现这一点。
涉及的步骤
UIButton
的 UIControlStateNormal
并将灰度转换图像从 GPUImageGrayScaleFilter
分配到 UIControlStateHighlighted
这个轮播的表现非常流畅。开始时 GPU Time Elapsed 配置文件出现峰值,但之后绝对为零。
随着测试的进行,我会更新分析统计数据。
谢谢大家。
如果您的图像数量有限,您可以下载普通图像,创建灰度副本并将两者保存到磁盘。
在 ScrollView 中,使用具有自定义类型和清晰背景颜色的 UIButton 而不是 UIImageView。
UIButton 允许您为不同的控件状态设置不同的图像
。
设置正常和选择/禁用状态的正常和灰度图像。对于不需要图像的 View ,只需不要设置图像。
当滚动开始和结束时,在委托(delegate)中更改按钮的状态。
附: :您是否考虑过 ScrollView 的更复杂的后代“UITableView”和“UICollectionView”,而不是使用简单的 ScrollView ?它们将为您节省大量与滚动相关的代码和时间。
关于iOS ScrollView 在非事件和滚动正常图像上具有灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27773232/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |