gpt4 book ai didi

ios - 在 Scrollview 的滚动条上移动 CALayer 的 mask

转载 作者:技术小花猫 更新时间:2023-10-29 11:01:07 26 4
gpt4 key购买 nike

我正在试验 iOS SDK,我有以下 UIView 结构:

  • UIView
    • UIImageView - 只有一张背景图片
    • UIImageView(带有 CALayer 掩码)
    • UIScrollView
      • 标签

非常简单的结构,UIScrollView 是透明层,第二个UIImageView 上面有一个 mask 。我想要做的是 CALayer 掩码会根据内容在 ScrollView 中的位置移动它的位置。如果用户滚动,则应更新掩码的位置。我已经使用 UIScrollView 的委托(delegate)解决了这个问题:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;

self.overlayImageView.viewlayer.mask.position = contentOffset;
}

掩码在 viewDidLoad 中创建,并且在 View Controller 的生命周期中不会更改。

问题是 mask 位置更新太慢。这样看起来 mask 是跟随 ScrollView 的内容,而不是随着它滚动。 scrollViewDidScroll 委托(delegate)方法被正确调用。

为了让您更好地理解问题,我附上了我在 iOS 模拟器中制作的视频。 http://www.youtube.com/watch?v=w3xRl3LTngY

那么问题是:

有没有办法让面具更新更快,或者这是 iOS 的限制?

最佳答案

CALayer 是隐式动画的一些属性,如位置尝试禁用它们:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;

self.overlayImageView.viewlayer.mask.position = contentOffset;
[CATransaction commit];

}

关于ios - 在 Scrollview 的滚动条上移动 CALayer 的 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592265/

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