我正在试用iOS SDK,我有以下UIView
结构:
UIView
UIImageView
-仅背景图像UIImageView
(带有CALayer
掩码)UIScrollView
Label
非常简单的结构,UIScrollView
是透明层,第二个UIImageView
上有一个遮罩。我想做的是,CALayer
遮罩会根据滚动视图中内容的位置移动它的位置。如果用户滚动,遮罩的位置应该会更新。我已经通过使用UIScrollView
的委托解决了这个问题:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;
self.overlayImageView.viewlayer.mask.position = contentOffset;
}
掩码是在viewDidLoad
中创建的,在视图控制器的生命周期内不会更改。
**问题是遮罩位置更新太慢。**这样看起来遮罩是跟随卷动检视的内容,而不是跟着卷动。scrollViewDidScroll
委派方法呼叫正确。
为了让你更好地理解这个问题,我附上了一个视频,我在iOS模拟器. http://www.youtube.com/watch?v=w3xRl3LTngY
所以问题是:
有没有办法让口罩更新更快或者这是iOS的极限?
2条答案
按热度按时间bakd9h0s1#
CALayer对某些属性(如位置)进行了隐式动画设置,请尝试禁用它们:
ppcbkaq52#
我的解决方案如下: