2016-06-01 22 views
0

Ich muss eine benutzerdefinierte UITableViewCell erstellen, aber ich bin mir nicht sicher, wie mit dem Inhalt umzugehen ist. Der angegebene Entwurf würde wie folgt aussehen:UICollectionView in UITableViewCell?

ich die Etiketten sortiert haben und die Grenzen und alles, aber in Anbetracht der Tatsache, dass der Inhalt dynamisch ist, ich weiß nicht, was es zu benutzen, zu organisieren Innerhalb.

Ich habe über das FlowLayout gelesen, aber ich bin mir nicht sicher, wie es zu verwenden, und auch über die UICollectionView, aber alles, was die Sammlung anzeigen kann, ist eine horizontale Bildlauf in der Zelle, eine Funktion, die nicht passe meine Bedürfnisse an.

Können Sie mir einige Vorschläge machen, wie Sie dies erreichen können?

Antwort

2

Hier ist eine sehr grundlegende Implementierung von UICollectionView mit dynamischer Zellengröße.

class CollectionViewController: UICollectionViewController { 

    @IBOutlet var myCollectionView: UICollectionView! 

    let tags = [ 
    "Web Design", 
    "ADWE", 
    "Busisness functions", 
    "Comics", 
    "Web", 
    "News in the Middle East", 
    "Albanian", 
    "Possession of machetes", 
    "Nuclear physics", 
    "Cookery", 
    "Cross stitiching" 
    ] 

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    return 1 
    } 

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return tags.count 

    } 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("dynamicCell", forIndexPath: indexPath) 
    cell.layer.borderColor = UIColor.grayColor().CGColor 
    cell.layer.borderWidth = 1.0 
    cell.layer.cornerRadius = cell.frame.height/2.0 
    let tagLabel = cell.viewWithTag(100) as? UILabel 
    tagLabel?.text = tags[indexPath.row] 
    return cell 
    } 

} 

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

    let tagLabel = UILabel() 
    tagLabel.text = tags[indexPath.row] 
    let size = tagLabel.intrinsicContentSize() 
    let cellSize = CGSizeMake(size.width + 40, size.height + 20) //added 40 to width to add space around label. 

    return cellSize 

    } 
} 

enter image description here

Sie würden die Formatierung haben, um aufzuräumen wie in dem Verfahren sizeForItemAtIndexPath benötigt.

Hoffe, das hilft!

+0

Denken Sie darüber nach, wenn die Reihenfolge der Tags nicht wichtig ist, dann würde ich eine Sortierfunktion schreiben, um das Layout zu optimieren (und wahrscheinlich die vollständige Rechtfertigung). – DJohnson

Verwandte Themen