2015-02-24 54 views
0

這一個讓我感到困惑。好的,我們走吧。 我拉下IG的圖像,他們在3種尺寸:150×150 ,306x306,640x640在所有屏幕尺寸的CollectionView中正確顯示Instagram照片

我想什麼做的是顯示他們3跨,所有iPhone的屏幕尺寸(5,5S,6,6 +)。 306x306的尺寸超快,看起來不錯。所以這是我的出發點(150x150有點模糊,640x640也是一種選擇,我也可以使用這些,只是想節省一些帶寬)。

邊緣可以與邊緣齊平,兩邊之間有1 px/pt線。我對這件事情大發雷霆。我的理解是,下面的函數應該覆蓋Storyboard中的任何其他設置,以及我應該關注的位置(我已經打印出了我從println()捕獲的尺寸。最後的寬度和高度需要在所有屏幕上工作我已經嘗試了一些排列,但還沒有釘住它,我很近,但沒有雪茄,這些都是在故事板中使用CollectionView。問題的心裏很不舒服,整天都在這一個。

我不認爲自動佈局可以在所有幫助,這一切都在代碼中完成,但誰知道?

謝謝[地段!] :-)

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    var width = CGRectGetWidth(collectionView.bounds) 

    println("width: \(width)") 

    // iphone5 320 
    // iphone5S 320 
    // iphone6 375 
    // iphone 6+ 414 

    return CGSize(width: NeedCorrectWidthHere, height: NeedCorrectHeightHere) 

} 

但這部分工作,具有圖像之間的間隙:

var screenWidth = CGRectGetWidth(collectionView.bounds) 
var cellWidth = screenWidth/3 

return CGSize(width: cellWidth-10, height: cellWidth-10) 

回答

2

這似乎工作。最後一個非常簡單的解決方案。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    var screenWidth = CGRectGetWidth(collectionView.bounds) 
    var cellWidth = screenWidth/3 

    return CGSize(width: cellWidth-2, height: cellWidth-2) 

} 

    func collectionView(collectionView: UICollectionView, 
     layout collectionViewLayout: UICollectionViewLayout, 
     minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { 
      return 3 
    } 

    func collectionView(collectionView: UICollectionView, 
     layout collectionViewLayout: UICollectionViewLayout, 
     minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { 
      return 3 
    }