2016-07-13 5 views
0

Ich erstelle eine UICollectionViewController und ich möchte es drei Zellen in jeder Zeile anzeigen. Die Breite jeder Zelle sollte 1/3 des gesamten Bildschirms betragen. Jedoch, wenn ich zuerst die UICollectionViewController Szene betrete, sind alle Zellen sehr klein. Wenn ich den Bildschirm scrolle, werden einige Zellen zu größeren Zellen, die die erwartete Größe haben. enter image description here enter image description here enter image description hereDie Größe von UICollectionViewCell wird anders sein, wenn ich den Bildschirm scrollen

Teil meines Code:

class imageCollectionViewController: UICollectionViewController { 
private let reuseIdentifier = "photoCell" 
var photos:albumCellModel? 
override func viewDidLoad() { 
    super.viewDidLoad() 
    navigationController?.toolbarHidden = true 

    if let layout = collectionView!.collectionViewLayout as? UICollectionViewFlowLayout { 
     let itemWidth = view.bounds.width/3.0 
     let itemHeight = layout.itemSize.height 
     layout.itemSize = CGSize(width: itemWidth, height: itemHeight) 
     layout.invalidateLayout() 
    } 
} 
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 

    return 1 
} 
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    if let photos = photos 
    { 
     return photos.photoSet.count 
    } 
    return 0 
} 

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("photoCell", forIndexPath: indexPath) as! imageCollectionViewCell 
    cell.imageView.image = photos?.photoSet[indexPath.row].image 
    return cell 
} 

Antwort

1

ich mit meinem vorherigen Projekt das gleiche Problem zu tun begegnen. Ich habe es geschafft, das Problem mit dieser Bibliothek zu lösen. Snapkit. Importieren Sie die Bibliothek in pod und implementieren sie in cellForItemAtIndexPath

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as! TestCell 
let width = self.view.bounds.size.width/2 - 10 
    cell.imageView.snp_makeConstraints { (make) -> Void in 
     make.width.equalTo(width) 
     make.height.equalTo(3*width/2) 
    } 

return cell 

} 

einfach nur setzen oben und führende Einschränkung für die Imageview im Storyboard. Ich hoffe es hilft.

+0

Ich lösche nur zwei Constraints, wie Sie verdaut, aber das Ergebnis ist, dass es nur Teil meines Bildes dispaly. – beasone

+0

haben Sie die Bibliothek, die ich vorschlagen, auf Pod –

+0

installiert Entschuldigung, ich habe diese Bibliothek nicht installiert. Ich werde es jetzt versuchen. – beasone