2017-04-13 120 views
0

我正在使用swift3我的應用程序包含用於水平滾動的UIscrollview。它包含帶分頁的圖像。下面是它的代碼示例。在iPad上水平滾動時uiscrollview laggging

for index in 0..<storyImages.count { 
     frame.origin.x = self.scrollView.frame.size.width * CGFloat(index) 
     frame.size = self.scrollView.frame.size 
     self.scrollView.isPagingEnabled = true 
     print(self.scrollView.bounds.width * CGFloat(index)) 
     let rect = CGRect(x: CGFloat(self.scrollView.bounds.width * CGFloat(index)), y: 0, width: scrollViewWidth , height: scrollViewHeight) 
     let imageView = UIImageView() 
     imageView.frame = rect 
     imageView.image = storyImages[index] 
    self.scrollView.addSubview(imageView)   
    } 

它在所有iPhone上運行都很完美,但是在iPad上執行時同樣的應用水平滾動滯後。請告知

+0

你在哪裏設置scrollview的contentSize? – karthikeyan

回答

1

爲此目的使用UICollectionView要好得多。

將集合視圖的滾動方向設置爲水平並啓用分頁。 和最小間距 enter image description here

extension FirstViewController: UICollectionViewDataSource { 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 
     cell.backgroundColor = indexPath.row % 2 == 0 ? #colorLiteral(red: 1, green: 0.3126001954, blue: 1, alpha: 1) : #colorLiteral(red: 0.1411764771, green: 0.3960784376, blue: 0.5647059083, alpha: 1) 
     return cell 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 5 
    } 

} 

extension FirstViewController: UICollectionViewDelegateFlowLayout { 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     return collectionView.frame.size 
    } 

} 
+0

這是一個很好的答案。集合視圖重用單元格,並不像滾動視圖那樣將所有內容都保存在內存中。滾動視圖不會一次渲染所有內容,但整個視圖層次結構仍在內存中。 – Alistra

0

你必須關閉滾動型的滯後。

self.scrollView.isPagingEnabled = false