2013-09-26 34 views
2

我不能在滾動視圖後滾動視圖中的可見矩形座標。所以當我想要在可見矩形中添加子視圖時,我不能。我怎樣才能做到這一點?如何在IOS中滾動後滾動視圖可見的矩形框?

+1

爲什麼你不能?可見矩形具有scrollview.contentOffset的大小scrollview.bounds.size的大小 – Matt

回答

0

我不完全清楚你在問什麼,但如果你需要得到內容偏移它被滾動,你可以使用委託方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 

這將每次contentOffset更改時都會調用它。

另外,您可以使用

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

知道秒它停止減速滾動視圖的contentOffset

或者

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

知道滾動型的contentOffset當用戶停止平移左右它。

2

在所有時間滾動型的可視矩形是如下:

CGRectMake(scrollview.contentOffset.x, scrollview.contentOffset.y, scrollview.frame.size.width, scrollview.frame.size.height) 
+1

注意,這是正確的,但可以簡化爲'scrollview.bounds'。對於'UIScrollView',邊界的原點是內容偏移量。此外,這隻適用於zoomScale = 1.如果縮放,則必須轉換矩形才能獲得正確的結果。 – Joel

3
CGRect visibleRect = CGRectMake(myScrollView.contentOffset.x, myScrollView.contentOffset.y, myScrollView.contentOffset.x + myScrollView.bounds.size.width, myScrollView.contentOffset.y + myScrollView.bounds.size.height) 

這應該讓你的rect當前可見,滾動後。 不是你必須決定的是,當你想要計算矩形。如果你想立即得到這個,那麼在scrollViewDidScroll方法中執行。如果你想在用戶開始滾動時得到它,那麼在scrollViewWillBeginDragging中執行。如果你想在用戶完成滾動並且scrollView來休息之後,在scrollViewDidEndDraggingscrollViewDidEndDecelerating中執行它。

+1

您的答案中尺寸不正確。您不會將偏移量添加到大小。 – Joel

2

UIScrollView的可見直徑爲myScrollView.bounds。沒有必要使用CGRectMake或使用contentOffset屬性,因爲其他答案顯示(儘管它確實讓你到同一個地方)。但是,如果滾動視圖允許縮放,則需要轉換矩形以考慮縮放。 this answer提供了許多應用轉換的解決方案。

相關問題