Search code examples
iosswiftviewcollectionscgsize

iOS Swift - CGSizeFromString throws CGSizeZero


I have this function which is used to set size from String length. Something like that - Swift iOS - Tag collection view.

First item in categoriesItems is "Age"

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

        var cellWidth : CGSize = CGSizeFromString(self.categoriesItems[indexPath.row].name);

        return cellWidth
}

Solution

  • To determine the width of text use the following code

    let text = self.categoriesItems[indexPath.row].name
    let rect = text.boundingRectWithSize(constraintSize, options: NSStringDrawingOptions.UsesFontLeading, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(17)], context: nil)
    return rect.size.width
    

    where constraintSize is some arbitrary size in which you wish to constraint your text