2016-07-08 17 views
0

Das Problem ist, dass ich einen anderen UILabel Inhalt für jede Zelle haben und ich möchte die Breite der Zelle fixiert und die Höhe flexibel je nach dem Inhalt, der UILabel Höhe ist, versuchte ich verschiedene Lösungen für dieses Problem und beobachtete mehrere Tutorials, aber leider hat es für mich nicht funktioniert.Sammlung Ansicht Zelle Auto Layout Deferent Höhe für jede Zelle

** Ich habe einen View-Controller und zwei Sammel Ansichten und ich brauche nur einer von ihnen eine flexible Höhe haben **

extension TextViewController : UICollectionViewDelegateFlowLayout { 

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

    if collectionView == PagesCollectionView 
    { 
    return CGSizeMake(44.0, 44.0) 
    } 
    else { 

     width = UIScreen.mainScreen().bounds.width - CGFloat(14) 

     return CGSizeMake(width , hight) 
    } 


} 

Edit 1:

Gibt es eine einfache Möglichkeit, wie in der Tabellenansicht?

Beispiel: -

override func viewDidLoad() { 

super.viewDidLoad() 

self.tableView.estimatedRowHeight = 80 
self.tableView.rowHeight = UITableViewAutomaticDimension } 
+0

Scheck über diesen Link könnte helfen angezeigt werden http://stackoverflow.com/questions/ 27285258/collectionview-dynamic-cell-height-swift –

+0

Thx, es ist ein guter Ansatz, aber nicht das, was ich brauche, ich will die Höhe gleich The Label hight. Ist es möglich, von diesem Spaß auf cell.label.hight zuzugreifen? Ich habe versucht, darauf zuzugreifen, habe aber nicht herausgefunden, wie es geht. – user6510240

Antwort

0

Ich gehe davon aus, dass Sie einen Text in der Zelle

extension TextViewController : UICollectionViewDelegateFlowLayout { 

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

     if collectionView == PagesCollectionView 
     { 
     return CGSizeMake(44.0, 44.0) 
     } 
     else { 

      let width = UIScreen.mainScreen().bounds.width - CGFloat(14) 
      let text = YourDataSource[indexPath.item].text 
      let size = CGSizeMake(width, 800) // just any arbitrary height to make it compile 
      let options = NSStringDrawingOptions.UsesFontLeading.union(.UsesLineFragmentOrigin) 
      let estimatedFrame = NSString(string: text).boundingRectWithSize(size, options: options, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(16)], context: nil) 
      return CGSizeMake(width , estimatedFrame.height) 
     } 


    }