iOS Swift - CGSizeFromString выдает CGSizeZero

У меня есть эта функция, которая используется для установки размера от длины строки. Нечто подобное - Swift iOS - представление коллекции тегов.

Первый товар в категории "Товары" - "Возраст"

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

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

        return cellWidth
}

2 ответа

Решение

Для определения ширины текста используйте следующий код

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

где constraintSize некоторый произвольный размер, в котором вы хотите ограничить свой текст

Ты можешь использовать NSStrings sizeWithAttributes Функция для этого. Затем вы произносите это как CGSize, Этот размер является размером текста, поэтому, если вы хотите, чтобы вокруг него были отступы, просто добавьте значение к ширине и высоте размера:

let string: NSString = self.categoriesItems[indexPath.row].name
let size: CGSize = string.sizeWithAttributes(nil) // Enter font/size attributes here
return size
Другие вопросы по тегам