Mam dodać UICollectionView
do mojego UIViewController
i zrobiłem niestandardową komórkę dla niego.UICollectionViewCell treści niewłaściwy rozmiar przy pierwszym obciążeniu
Ustawię rozmiar komórki za pomocą metody sizeForItemAtIndexPath
i ustaw każdą komórkę na UIScreen.mainScreen().bounds.width/2
zarówno pod względem wysokości, jak i szerokości. Zasadniczo każda komórka ma połowę szerokości ekranu i tej samej długości.
Mam wtedy wewnątrz komórki komórkę UIImageView
z każdą krawędzią przypiętą do jej względnej krawędzi komórki, dzięki czemu obraz wypełnia komórkę. Mam również UILabel
, który jest wyśrodkowany zarówno w pionie, jak iw poziomie w komórce.
Jednak przy pierwszym załadowaniu komórka ma prawidłowy rozmiar, ale zawartość jest znacznie mniejsza na małym kwadracie w lewym górnym rogu. (Na poniższym obrazku ustawiłem zawartość komórki: kolor tła na zielony, a na obrazie kolor tła na czerwony).
Następnie po przewinięciu w dół trochę (i zakładam wielokrotnego użytku komórka jest rozkolejkowywana) wszystkie komórki są w porządku (i pozostają w porządku po przewinięciu kopię zapasową).
Co jest przyczyną treść nie może być ograniczone odpowiednio na pierwszym obciążeniu?
UPDATE
Niektóre kodu z mojego UIViewController
:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("PrevDrawCell", forIndexPath: indexPath) as? PrevDrawCell
if cell == nil {
cell = PrevDrawCell()
}
cell!.drawVC = self
cell!.imageShortCode = self.tempImageURLs[indexPath.row]
// Pull image (async) and set after download
cell!.setupImage()
cell!.contentView.backgroundColor = UIColor.greenColor()
cell!.coverView.backgroundColor = UIColor.redColor()
cell!.dateLabel.font = UIFont(name: "HelveticaNeue-Light", size: 26)
cell!.dateLabel.text = "\(self.tempImageURLs.count-indexPath.row)/9"
return cell!
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let size = UIScreen.mainScreen().bounds.width/2
return CGSize(width: size, height: size)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsZero
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
Pokaż 'UIViewController' – Arsen
Masz na myśli przedstawienie kodu dla' UIViewController'? – myles
tak, pokaż kod – Arsen