2016-07-13 3 views
0

Я создаю UICollectionViewController, и я хочу, чтобы он отображал по три ячейки в каждой строке. Ширина каждой ячейки должна быть 1/3 всего экрана. Однако, когда я впервые вхожу в сцену UICollectionViewController, все ячейки очень маленькие. Когда я просматриваю экран, некоторые ячейки становятся более крупными ячейками с ожидаемым размером. enter image description here enter image description here enter image description hereРазмер UICollectionViewCell будет отличаться при прокрутке экрана

Часть моего код:

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 
} 

ответ

1

я сталкиваюсь с той же проблемой с моим предыдущим проектом. Мне удалось решить эту проблему, используя эту библиотеку. Snapkit. импортировать библиотеку в стручке и реализовать его в 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 

} 

просто поставить только сверху и ведущее ограничение на ImageView в раскадровке. Надеюсь, поможет.

+0

Я просто удаляю два противопоказания, как вы заговорили, но результат в том, что он только рассеивает часть моего изображения. – beasone

+0

Вы установили библиотеку, которую я предлагаю на pod –

+0

К сожалению, я не установил эту библиотеку. Я попробую сейчас. – beasone

Смежные вопросы