iphone - UIScrollView 中的动画

标签 iphone ios animation uiscrollview

我想淡出 View ,因为它在父 UIScrollview 中滚动。当淡出动画开始时, ScrollView 停止滚动。当淡入淡出完成时,它会跳转到正确的位置。

我的淡出是通过 animateWithDuration 和 block 对象实现的,在我在 scrollViewWillBeginDragging 中检测到的页面更改时触发。

有谁知道如何让它们同时发生?需要说明的是,我并不是在“动画化”UIScrollView 的滚动——而是通过用户的滑动交互来实现的。

编辑:

这是我用来淡化 UIView 的代码。此代码位于 UIViewController 派生类中,它是 UIScrollView 的委托(delegate)。当用户开始拖动他的手指时,我想淡出 subview 。但是当用户开始拖动手指时, subview 消失并且滚动停止。在 subview 完全淡出后, ScrollView 将捕捉到用户手指所在的位置。

-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView
{
    [UIView animateWithDuration:0.5
        animations:^
        {
            self.subView.alpha = 0.0f;
        }
        completion:^(BOOL finished) { }];
}

最佳答案

有点晚了,但如果你想继续使用 block ,你可以使用:

animateWithDuration:delay:options:animation:complete:

将“UIViewAnimationOptionAllowUserInteraction”添加到选项以允许在滚动时进行交互。

我相信您仍然会遇到延迟问题。这是我能解释的最好方法。请提前原谅我,因为我可能使用了错误的术语。所有动画都必须在主线程上运行。当您调用动画时,iOS 首先 *P* 处理然后它 *R* 在它生成 *F* 帧之前渲染。看起来像这样。

PPPPRRRRFFFFFFFFFFFFFFFFFF

但由于 ScrollViews 不知道你的动画要持续多长时间或何时结束,所以它必须像这样执行动画。

PRFPRFPRFPRFPRFPRFPRFPRF

我的理论是,您遇到的延迟与这两个调用同时在主线程上发生冲突有关。除了使用更快的芯片之外,我不确定您将如何解决这个问题。我知道您可以将一个动画推送到 CPU,将一个动画推送到 GPU,但我在编程方面还没有那么先进。

关于iphone - UIScrollView 中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659841/

相关文章:

以编程方式设置 iPhone/iPad 外壳颜色

iphone - 从其他控件继承的值

ios - SpriteKit 中的定时定时器

java - 无法集中动画 (libGdx)

画笔属性的 WPF ColorAnimation

iPhone - 如何使用具有复杂参数的performSelector?

ios - 如何限制应用程序仅在 iPhone 中下载而不在 iPad 中下载

iphone - Crashlytics 集成问题

ios - Xcode - 将图像添加到测试中?

java - 如何多次绘制相同的运动图像?