我有一个类似于表的可滚动视图。布局结构在右边的图片上。
视图有一个包含部分的滚动图层。每个部分都有标题和行。 当我向上滚动时,我需要将部分标题保持在行上方,就像在普通的UITableView中一样。
当我滚动图层时,我将滚动位置传递给该部分,因此它可以调整标题的位置。在视图中:
- (void)updateContentVerticalScrollPosition
{
[CATransaction begin];
[_scrollableContentLayer scrollToRect:scrollRect];
[_section setVerticallScrollPositionInSuperlayer:_verticalScrollPosition];
[CATransaction commit];
}
在本节中,我更新了标题的位置:
_titleLayer.position = CGPointMake(0, titleLayerVerticalPosition);
它有效,但即使我使用事务,滚动图层和标题也会以不同的速度移动。因此,看起来标题图层是浮动的。
有谁知道如何同步滚动图层和标题图层的动画?
答案 0 :(得分:1)
我找到了解决方案。 NSScrollLayer不使用默认计时功能来设置滚动动画,而是使用线性动画。所以,我们只需要改变@“position”键的动作。
CABasicAnimation* animation = [[CABasicAnimation alloc] init];
animation.duration = 0.25;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[_titleLayer setActions:[NSDictionary dictionaryWithObject:animation forKey:@"position"]];
[animation release];