IOS:在带有动画的 ImageView 下禁用滚动视图

Posted

技术标签:

【中文标题】IOS:在带有动画的 ImageView 下禁用滚动视图【英文标题】:IOS: scrollview disabled under an ImageView with animation 【发布时间】:2011-10-24 10:53:24 【问题描述】:

在我的应用程序中,我有一个“启用分页”的滚动视图,当我选择一个页面时,一个 imageview 以这种方式启动它的动画

- (void) beginWinAnimation
[UIView animateWithDuration:2.5
                 animations:^successView.alpha = 1.0;
                 completion:^(BOOL finished) 

                 [UIView animateWithDuration:2.5
                 animations:^successView.alpha = 0;];
                 ];

在这个动画中,我可以看到这个successView下的scrollview,我可以移动scrollview页面;我希望在动画期间你不能移动滚动视图,但只有在动画完成时才能移动,这可能吗?

【问题讨论】:

【参考方案1】:

是的,这是可能的。动画开始时设置[scrollView setScrollEnabled:NO]; 动画完成后将其设置回YES

所以在你的代码中,它看起来像 -

- (void) beginWinAnimation

[scrollView setScrollEnabled:NO];

[UIView animateWithDuration:2.5
                 animations:^
                     successView.alpha = 1.0;
                 
                 completion:^(BOOL finished) 
                     [UIView animateWithDuration:2.5
                         animations:^successView.alpha = 0;
                         completion:^(BOOL finished) 
                             [scrollView setScrollEnabled:YES];
                         ]; 
                 ];

看看这是否有效。

【讨论】:

这是一个完全正确的答案;我想切换userInteractionEnabled 哪个UIScrollViewUIView 继承作为scrollEnabled 的替代是值得一提的更通用的方法。 因为@blackguardian 只想阻止滚动条,所以只阻止它是有意义的。我们可以通过关闭userInteractionEnabled 来实现相同的行为,但随后屏幕上的所有内容都变得不可点击。这会导致一些丑陋的可用性问题。所以... 它可以工作但是有一个问题,当alpha从1变为0时启用滚动;当 alpha 由 0 变为 1 时就可以了 现在是你想要的吗? 是的,当动画运行时滚动应该被禁用

以上是关于IOS:在带有动画的 ImageView 下禁用滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

大源码ImageView动画

ios怎样在imageView实现动画

使带有 imageView 的 UIButton 看起来被禁用而不将 isEnabled 设置为 false

ImageView 动画重复

如何创建对对象的引用以在 iOS 中对其进行动画处理

imageview 上的波纹效果