7

我正在尝试查找一串文本的物理像素大小。然后我想用这个大小来设置一个圆形矩形按钮的长度。我用来获取长度的方法返回一个 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。

4

2 回答 2

24

CGSize是一个结构:

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

只需用于tagStringLength.width获取您关心的号码。

而且我很确定你应该得到一个编译时错误,而不是运行时错误。

于 2012-02-01T00:27:09.410 回答
5

CGSize是两个元素的结构:CGFloat宽度和CGFloat高度。

示例代码:

CGSize size;
CGFLoat width = size.width;
CGFLoat height = size.height;
于 2012-02-01T00:27:42.653 回答