Конвертируйте CGSize в CGFloat и используйте его для определения размера RoundRectButton. - PullRequest
4 голосов
/ 01 февраля 2012

Я пытаюсь найти физический размер пикселя строки текста. Затем я хочу использовать этот размер, чтобы установить длину roundRectButton. Метод, который я использую, чтобы получить длину, однако возвращает CGSize. Как мне конвертировать это в CGFloat? В качестве альтернативы, возможно, кто-то может предложить совершенно другой способ сделать это.

Это код, который у меня есть:

// Note: tagAsString is a string of Tag names (Example "tag1, tag2, tag3")
// Note: Code to set this is not relevant to the question.

// get length of tagsAsString.
CGSize tagStringLength = [tagsAsString sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0] forWidth:100.0 lineBreakMode:UILineBreakModeTailTruncation];

// size button to fit length of string
// Note: spotTags is a roundRectButton
cell.spotTags.frame = CGRectMake(96, 33, tagStringLength, 25);

// set the title of the roundRectButton to the tag string
[cell.spotTags setTitle:tagsAsString forState:UIControlStateNormal];

Как вы можете видеть выше, я использую метод CGRectMake, который принимает 4 аргумента как CGFloat. Однако я передаю CGSize, который вызывает ошибку во время выполнения.

Ответы [ 2 ]

20 голосов
/ 01 февраля 2012

CGSize это структура:

struct CGSize {
   CGFloat width;
   CGFloat height;
};
typedef struct CGSize CGSize;

Просто используйте tagStringLength.width, чтобы получить номер, который вам нужен.

И я почти уверен, что вы должны получить ошибку во время компиляции, а не ошибку во время выполнения.

5 голосов
/ 01 февраля 2012

CGSize - это структура из двух элементов: CGFloat ширина и CGFloat высота.

Пример кода:

CGSize size;
CGFLoat width = size.width;
CGFLoat height = size.height;
...