2016-04-07 22 views
1

Koleksiyonumda bazı ciddi sorunlar yaşıyorum. Bu yüzden uyumsuz duruma getiriyorum. bir api'den bazı veriler ve veri değişkeni ayarladım, koleksiyonumu yeniden yüklediğimde. Koleksiyonumda temel olarak, api'den veriye sahip bazı hücreler ve bir artı simgeli ekstra bir hücre var. Hücre şekli ve düzeni aynıdır, bu yüzden her ikisi için de aynı collectionviewcell sınıfını kullandım.UICollectionView ImageView Sorunları

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return data.count + 1 
} 

Ve böyle cep şeyler:

böyle öğelerin benim sayısını hesaplamak

class OverviewUserCell: UICollectionViewCell { 

    @IBOutlet weak var nameLabel: UILabel! 
    @IBOutlet weak var userImageView: UIImageView! 

    override func layoutSubviews() { 
    super.layoutSubviews() 
    self.makeItCircle() 
    } 

    func makeItCircle() { 
    self.userImageView.layer.masksToBounds = true 
    self.userImageView.layer.cornerRadius = CGFloat(roundf(Float(self.userImageView.frame.size.height/2.0))) 
    } 

} 
:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! OverviewUserCell 

    if(indexPath.row == data.count) { 
    cell.userImageView.image = UIImage(named: "plus")! 
    //some additional coloring and stuff 
    } else { 
    cell.userImageView.image = UIImage(named: "oma")! 
    //some additional coloring and stuff 
    } 
    cell.contentView.frame = cell.bounds 
    cell.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 
    cell.layer.cornerRadius = 8 

    return cell 
} 

Benim hücre kendisi yuvarlak görüntü ve Etiket içerir

Her nasılsa (belki de farklı görüntü boyutları nedeniyle), görüntü görünümünün çerçevesi değişir veya böyle bir şey, b çünkü artı görüntü yuvarlak değil, aynı kalmasını istiyorum. Hücredeki her öğeye kısıtlamalar ekledim. Verileri yüklemezsem, görüntü mükemmel bir şekilde yuvarlak olur, ancak veriler yüklendiğinde ve koleksiyon görünümü yeniden yüklendiğinde, artı görüntü artık yuvarlak değildir.

Resimler aynı boyutta ve aynı konumda olmalıdır.

+0

'clipsToBounds = true' öğesini' makeItCircle' işlevine eklemeye çalışın – kye

+0

Bu işe yaramıyor. Kye – Tobias

+0

'CGFloat (roundf (Float (self.userImageView.frame.size.height/2.0)))' senin sorunun olabilir. "CGFloat" 'a yuvarlanmaya veya dönüştürmeye gerek yoktur. Frame.size.width/2' ve 'clipToBounds' – kye

cevap

1

Hücrenin köşe yarıçapını ayarlamak yerine, UIImageView öğesinin köşe yarıçapını ayarlamayı deneyin. Ancak bundan önce UIImage görünümünüzün genişliğe eşit yüksekliğe sahip olduğundan emin olun.

ve imageview.layer.cornerRadius = 8 ayarlanmadan önce; bu satırı ekleyin: imageview.layoutIfNeeded();

+0

Resimlerimden de görebileceğiniz gibi, hücrenin köşe rayını da kullanmak istiyor, ancak sorun sadece görüntülemede. Görüntü resmimi boyutlandırmak için autolayout kullanıyorum. LayoutIfNeeded() herhangi bir fark yaratmaz! – Tobias

+0

Uiimageview'e ne tür kısıtlamalar eklediğini söyleyebilir misiniz? –

+0

Evet, onları yazıya bir resim olarak ekledim! – Tobias