gpt4 book ai didi

ios - CAGradientLayer 使用 UIScrollView 滚动

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:28 25 4
gpt4 key购买 nike

我正在尝试在 UIScrollView 之上添加一个 CAGradientLayer 以将边缘淡化为透明。

渐变是正确的,但是当 UIScrollView 滚动时,我添加的 mask 会移动。

我已尝试提交 CATransaction,但仍未成功。

- (void)layoutSubviews
{
[super layoutSubviews];

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];

NSObject * transparent = (NSObject *) [[UIColor colorWithWhite:0 alpha:0] CGColor];
NSObject * opaque = (NSObject *) [[UIColor colorWithWhite:0 alpha:1] CGColor];

CAGradientLayer* hMaskLayer = [CAGradientLayer layer];
hMaskLayer.opacity = .7;
hMaskLayer.colors = [NSArray arrayWithObjects:transparent, opaque, opaque, transparent, nil];
hMaskLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.2],
[NSNumber numberWithFloat:0.8],
[NSNumber numberWithFloat:1.0], nil];
hMaskLayer.startPoint = CGPointMake(0, 0.5);
hMaskLayer.endPoint = CGPointMake(1.0, 0.5);
hMaskLayer.bounds = self.bounds;
hMaskLayer.anchorPoint = CGPointZero;

self.layer.mask = hMaskLayer;

[CATransaction commit];
}

最佳答案

the mask I'm adding moves when the UIScrollView scrolls

这并不奇怪,因为层的位置是基于其超层的边界,而边界正是滚动时发生的变化。

简单的解决方案:将 ScrollView 放在一个父 View 中,其大小和掩码该父 View 的层完全相同。

关于ios - CAGradientLayer 使用 UIScrollView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28685905/

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