2010-01-07 137 views
3

在我的應用程序中,我有一個視圖來擴展UIScrollView,並在用戶滾動時填充其內容。但是,如果用戶滾動速度過快,UIScrollView內部填充的視圖不會按時創建,並且您實際上可以看到UIScrollView的背景。發生這種情況的原因是因爲我在layout中執行延遲加載每次contentOffset屬性發生更改時,似乎都不會調用子視圖。更改UIScrollView滾動速度

如果您慢慢滾動UIScrollView,則不會遇到上述問題,並且內容加載速度不夠快。

我能想到的唯一解決這個問題的方法是讓UIScrollView在用戶從屏幕上擡起手指時不會比一定的速度更快地滾動。

就這樣,您知道更改decelerationRate屬性不是我的解決方案。 DecelerationRate指示UIScrollView在用戶擡起手指後需要停止滾動的速度。

由於事先

FBR

+0

爲什麼不/你不能做蘋果在地圖和Safari瀏覽器應用程序中做什麼,只顯示卸載內容的抽象背景? – Jonathan 2010-01-07 01:42:38

+0

我當然可以做到這一點,但在這個應用程序中看起來不太好。 – ForeignerBR 2010-01-07 19:25:09

+0

你有沒有找到解決方案? – 2010-11-17 20:23:46

回答

1

scroll.pagingEnabled = YES;

0

我有完全相同的問題。我有一個雙向的方式(iOS 8.3版本,雨燕1.2)解決了這個問題:

  1. 準備

    • 滾動視圖委託添加到您的類:

      class myCustomClassName:UIViewController,UIScrollViewDelegate 
      { 
      } 
      
    • 使我的班scrollview的代表:

      self.myScrollView.delegate = self 
      
    • 添加委託方法,其中我得到的contentOffset(滾動位置):用布爾檢查

      func scrollViewDidScroll(scrollView: UIScrollView) 
      { 
          //some code... 
      } 
      
  2. 增加了 「內容範圍」,如果數據已經beend加入:

    func scrollViewDidScroll(scrollView: UIScrollView) 
    { 
        //Total products = TP 
        if self.useScrollViewDynamicLoading 
        { 
         var scrollPosition:CGFloat = scrollView.contentOffset.y 
         switch scrollPosition 
         { 
          case 200.0...300.0: 
          //TP = 24 
          if self.checkIfProductsInGivenRangeHaveAlreadyBeenAdded(18) 
          { 
           loadProductsForProductRange(12) 
          } 
          case 600.0...700.0: 
          //TP = 36 
          if self.checkIfProductsInGivenRangeHaveAlreadyBeenAdded(24) 
          { 
           loadProductsForProductRange(18) 
          } 
         } 
         .... 
    
  3. viewDidLoad()改變滾動視圖的減速率:

    self.myScrollView.decelerationRate = 0.5