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
некоторый произвольный размер, в котором вы хотите ограничить свой текст
Ты можешь использовать NSString
s sizeWithAttributes
Функция для этого. Затем вы произносите это как CGSize
, Этот размер является размером текста, поэтому, если вы хотите, чтобы вокруг него были отступы, просто добавьте значение к ширине и высоте размера:
let string: NSString = self.categoriesItems[indexPath.row].name
let size: CGSize = string.sizeWithAttributes(nil) // Enter font/size attributes here
return size