【发布时间】:2015-05-27 08:51:21
【问题描述】:
我想要动画like home screen of this app。这个屏幕顶部有一个视图(上面有一个标签),下面有一个表格视图。当我滚动表格时,它的顶视图和标题会随着动画而变小,在特定点之后,它就像导航栏一样,标题在中心。当我向下滚动时也是如此。 这是我到目前为止所尝试的
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint offset = scrollView.contentOffset;
NSLog(@"y is::: %f", offset.y);
if (offset.y > 0 && offset.y < 16 && self.topView.frame.size.height > 64) {
[UIView animateWithDuration:0.8 animations:^{
CGRect rect = self.topView.frame;
rect.size.height = rect.size.height-offset.y;
self.topView.frame = rect;
}completion:^(BOOL finish){
}];
}
else if(offset.y <= 0 && offset.y > -16 && self.topView.frame.size.height < 80)
{
[UIView animateWithDuration:0.8 animations:^{
CGRect rect = self.topView.frame;
rect.size.height = 80;
self.topView.frame = rect;
}completion:^(BOOL finish){
}];
}
}
请注意,我的顶视图初始高度是 80,我想在向上滚动时将其设为 64,反之亦然。 使用此代码,视图高度动画,但它取决于动画持续时间。因此,如果我快速滚动,则它无法正常工作。我提到的原始应用程序具有非常流畅的动画。我怎么能做到这一点? 原App截图- 这些屏幕截图显示了三个不同的滚动位置,请注意顶部的“MySurgery”文本。1- 较大的文本和右对齐。 2-小文本和接近中心位置 3-较小的文本和集中(如导航栏)
【问题讨论】:
-
没有线索?普通人,我需要你的帮助。
-
我认为问题与动画时间有关。您可以尝试在动画开始时将 scrollview scrollEnabled 设置为 false,并在动画结束时再次将其设置为 true。或者您可以减少动画时间。
-
也许您可以在新动画开始时删除正在运行或等待运行的动画。请注意,我不知道这是否可能:)
-
setScrollEnabled 设置为 false 当我缓慢滚动(它停止滚动)时会导致问题,即使在更快的滚动中我也没有得到想要的结果。
-
另一个建议是在每个新动画开始之前调用 removeAllAnimations。
标签: ios objective-c core-animation