2014-12-02 48 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]; 
}]; 
相關問題