您将如何在 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/