【问题标题】:iOS UIView animation when table view scroll?表格视图滚动时的iOS UIView动画?
【发布时间】: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


【解决方案1】:

我认为你不需要动画,你只需要一些计算和设置顶视图的框架。喜欢,

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

    if (offset.y>0 && offset.y<64) {
        [topView layoutIfNeeded];
        CGRect viewFrame = topView.frame;
        viewFrame.size.height--;
        topView.frame = viewFrame;
    }
}

请注意,如果您的视图使用自动布局,则 layoutIfNeeded 是必需的

【讨论】:

    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2013-12-30
    • 2019-11-21
    相关资源
    最近更新 更多