集合视图单元格自动布局每个单元格的传递高度

时间:2016-07-08 04:25:04

标签: swift autolayout ios9 uicollectionviewcell

问题是我为每个单元格提供了不同的UILabel内容,我希望单元格的宽度固定,高度灵活,取决于UILabel hight的内容,我尝试了针对此问题的不同解决方案并观看了几个教程但是不幸的是,它没有为我锻炼。

**我有一个视图控制器和两个集合视图 我只需要其中一个人拥有灵活的高度**

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 )
    }


}

编辑1:

是否有一种简单的方法可以像在表视图中那样执行此操作?

示例: -

override func viewDidLoad() {

super.viewDidLoad()

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

1 个答案:

答案 0 :(得分:0)

我将假设您要在单元格内显示文本

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)
        }


    }