2016-06-10 79 views
0

我創建了一個非常簡單的細節視圖,有幾張圖片,用戶可以通過頂部進行翻頁,並在底部的項目名稱上有一些細節。但是我的滾動視圖沒有頁面到正確的地方,像這樣:UIScrollView無法分頁正確的距離

enter image description here

我的滾動視圖的框架&其子視圖的框架設置如下:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.pictures.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height/CGFloat(2)) 
    self.pictures.clipsToBounds = false 
    let width = pictures.frame.width 
    let height = pictures.frame.height 



    /* 

    let view1 = UIView(frame: CGRectMake(pictures.frame.origin.x, 0, scrollViewWidth, scrollViewHeight)) 
    let view2 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth, 0, scrollViewWidth, scrollViewHeight)) 
    let view3 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 2, 0, scrollViewWidth, scrollViewHeight)) 
    let view4 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 3, 0, scrollViewWidth, scrollViewHeight)) 

    */ 

    for index in 0...2 { 
     let frame = CGRectMake(width * CGFloat(index), 0, width, height) 
     let view = UIView(frame: frame) 
     views.append(view) 
     pictures.addSubview(view) 
    } 

    views[0].backgroundColor = UIColor.redColor() 
    views[1].backgroundColor = UIColor.blueColor() 
    views[2].backgroundColor = UIColor.orangeColor() 


    pictures.delegate = self 
    pictures.contentSize = CGSizeMake(width * CGFloat(views.count), height) 


} 

有沒有人有任何建議,我怎麼能適應這個?我是否錯誤地實現了我的滾動視圖?

+0

你有沒有考慮過使用'UICollectionView'而不是'UIScrollView'? – Magoo

+0

如何將幻燈片類型接口與UICollectionView結合? –

+0

'UICollectionView'基於'UIScrollView',因此具有'pagingEnabled',它也可以水平滾動使用它的流佈局 – Magoo

回答

0

問題是您試圖訪問viewDidLoad()函數中的self.view.frame。當時它所稱的視圖還沒有正確佈置。視圖的框架將與您在故事板中指定的大小相同,大概{0,0,600,600}。

解決方案:您可以將您的頁面初始化代碼設置爲viewWillAppear,或者您可以考慮使用自動佈局,而不是直接操作框架。

+1

不幸的是將初始化代碼移動到viewWillAppear沒有解決問題,儘管這是一個很好的猜測:/ –

+0

我是避免自動佈局會導致滾動瀏覽的視圖數量(以及隨後的scrollView內容大小)將取決於上傳的圖片數量。其中大部分是動態的,所以我決定以編程方式執行 –

+0

viewDidLoad應該具有正確的視圖大小,但應該使用具有靈活高度,寬度和左邊距的同意的自動調整大小掩碼。 viewWillAppear不是佈局代碼的好地方。 – Magoo

0

您必須在寬度中添加+20,因爲在scrollView中,兩個頁面之間有一些空間可用。 因此,添加20它可能會解決您的問題。