2014-12-02 53 views
1

我正在研究基于Apple的PhotoScroller示例的文档查看器应用程序(https://developer.apple.com/library/IOs/samplecode/PhotoScroller/Introduction/Intro.html)。为什么在向我的滚动视图添加子视图时会出现不需要的动画?

我反应的缩放和滚动事件来加载映入眼帘新的网页,和旧的页面被回收,以减少产生新的开销。

我也有在应用程序的自动缩放(通过zoomToRect或通过设置contentOffset)。的处理程序中缩放和滚动事件里面,我添加新的页面需要:

[self configurePage:page forIndex:index]; //sets frame, loads image,... 
[self.scrolledView addSubview:page]; 

最让我惊讶的是,有时我看到一个页面,通过屏幕飞从左至右。通过一些日志记录,我确定它是一个新页面(以前从未使用过)。

这是怎么发生的?我怎么能阻止它?

期待您的建议....

ETA:当应用程序放大到一个页面上我这样做,与[UIScrollView zoomToRect:animate:NO][UIView animateWithDuration: ...]块内有过动画的速度控制。

我现在有我的配置和动画过程中加入,这将是可见的所有网页,并开始[UIView animateWithDuration: ...]动画事后才希望它的行为。

不过我很惊讶调用[self.scrolledView addSubview:page];缩放和滚动事件处理内部,可能会导致动画。如果任何人有一个线索如何以更清洁的方式阻止,请让我知道。

+0

您使用的自动布局?你用UIView.animate制作动画吗?? – 2014-12-02 16:37:47

+0

感谢您的想法。我不使用自动布局和我已经使用的唯一动画[UIScrollView的zoomToRect:动画:NO] UIView的animateWithDuration内:.... – 2014-12-02 20:21:06

+0

你使用Interface Builder来设置的东西,或者你做编程? – 2014-12-04 11:58:45

回答

2

如果animateWithDuration:...调用堆栈上,任何你做的是动画将动画。在你的addSubview:呼叫上设置一个断点,看看堆栈里有什么。

你也可以试试这个:

[UIView performWithoutAnimation:^{  // Note: available since iOS7. 
    [self.scrolledView addSubview:page]; 
}]; 
相关问题