iphone - UIScrollView 上的蒙版叠加

标签 iphone objective-c

您将如何在 UIScrollView 上叠加某种蒙版图像?

例如,我有一张图片,左边是黑色,右边是中间的白色。我想使用它,以便我的 ScrollView 中的项目逐渐淡出到两侧,并且中心项目完全不透明。

此外,放置 ScrollView 的 View 的背景是动态的并且可以更改的图像(不是纯色)。

有什么想法吗?

最佳答案

你的问题最终成为我能找到的关于基本问题的最佳来源,所以我决定在这里发布我的解决方案。

如果您将 mask 直接添加到 ScrollView ,出于某种原因,您最终会将 mask 应用于内容本身——即。 e.滚动时透明度不会改变。根据其他帖子的建议,我将渐变放在(或更确切地说,包含) ScrollView 的 View 中。因此,scrollContainer 是一个 UIViewObject,其唯一的 subview 是相关的 ScrollView 。

此掩码配置为从左到右滚动。您可以通过操纵渐变的起点和终点属性将其更改为从上到下。

不利的一面是,这也会剪辑 ScrollView 的滚动位置栏指示器。由于我的方案不需要,所以这是可以接受的,但您的情况可能会有所不同。

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = scrollView.bounds;
gradient.colors = [NSArray arrayWithObjects:
                   (id)[[UIColor colorWithWhite:0 alpha:0] CGColor],
                   (id)[[UIColor colorWithWhite:0 alpha:1] CGColor],
                   (id)[[UIColor colorWithWhite:0 alpha:1] CGColor],
                   (id)[[UIColor colorWithWhite:0 alpha:0] CGColor], nil];
gradient.locations=[NSArray arrayWithObjects:
                    [NSNumber numberWithFloat:0],
                    [NSNumber numberWithFloat:.1],
                    [NSNumber numberWithFloat:.9],
                    [NSNumber numberWithFloat:1], nil];
gradient.startPoint=CGPointMake(0, .5);
gradient.endPoint=CGPointMake(1, .5);
[scrollContainer.layer setMask:gradient];

关于iphone - UIScrollView 上的蒙版叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709543/

相关文章:

iphone - 什么是 Apple App Store 中应用程序的 "current version"?

iphone - 回调的代表数组不安全?

iphone - 长时间操作延迟后自旋事件指示器

iphone - SKAction 在持续时间内显示单个图像?

objective-c - OpenGL 与 Cocoa : No matching function call when trying to call CGLLockContext([[self openGLContext] CGLContextObj]);

iphone - 在 Objective-C 中,什么时候应该使用类方法,什么时候应该使用实例方法?

iphone - 我应该如何保护 iOS 中的 SQLite 数据库?

ios - 当我给UIImageView动画时,为什么UIImage引用会更改?

ios - 如何使用原生 webrtc 中的约束?

ios - 出现 View 时在表中加载新数据