在滚动查看中移动CALayer的蒙版
我正在尝试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; }
Mask是在viewDidLoad
中创build的,在视图控制器的生命周期中不会改变。
问题是,掩码位置更新太慢。 这样,它看起来面具是跟随滚动视图的内容,而不是滚动。 scrollViewDidScroll
委托方法调用正确。
为了更好地理解这个问题,我附上了一个我在iOS模拟器中制作的video。 http://www.youtube.com/watch?v=w3xRl3LTngY
所以问题是:
有没有办法让面具更新更快,或者这是iOS的限制?
CALayer隐式animation的一些属性,如位置尝试禁用它们:
- (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]; }
- 由CACurrentMediaTime()引起的架构i386编译错误的未定义符号
- iOS – animation效果 – 图像popup
- 等待animation在iOS中完成?
- 在animation之前改进HTML5 Canvas逐帧JPGanimation来完全caching
- 在reloadItemsAtIndexPaths之后避免UICollectionView的animation
- (Swift)如何(animation)显示/隐藏单元格基于UITextfieldinput通过重新加载UITableView?
- 在iOS中为文字添加animation内容 – 等同于Android的ValueAnimator
- animationUIButton的标题更改
- 使用Core Animation更改cornerRadius