Конвертируйте CGSize в CGFloat и используйте его для определения размера RoundRectButton.
Я пытаюсь найти физический размер пикселя строки текста. Затем я хочу использовать этот размер, чтобы установить длину 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 ответа
CGSize
это структура:
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
Просто используйте tagStringLength.width
чтобы получить номер, который вам небезразличен.
И я уверен, что вы должны получить ошибку во время компиляции, а не ошибку во время выполнения.
CGSize
это структура из двух элементов: CGFloat
ширина и CGFloat
рост.
Пример кода:
CGSize size;
CGFLoat width = size.width;
CGFLoat height = size.height;