CGRectMake替代方案

时间:2012-08-07 08:45:26

标签: objective-c c struct cgrect cgrectmake

我已经看到使用CGRectMake()替代初始化CGRect变量的替代方法:

  

CGRect frame =(CGRect){0,0,10,10};

我的问题是,CGRect frame = (CGRect){0,0,10,10};如何运作?幕后发生了什么?它看起来像一个初始化的c样式数组({x,y,w,h}),然后被转换为CGRect结构 - 这是正确的吗?如果是这样,如何将c样式数组转换为结构?

N.B。我不是问使用CGRectMake()的上述替代方案是否合适,我只想了解其原因/工作原理。

3 个答案:

答案 0 :(得分:7)

这是一个所谓的复合文字。您可以在Mike Ash撰写的这篇文章中详细了解它们:Friday Q&A 2011-02-18: Compound Literals

答案 1 :(得分:1)

你可以这样使用:

CGRect rect = CGRectFromString(@"{{0, 0}, {612, 892}}"); // it contents { CGPoint origin;CGSize size;};
NSLog(@"rect : %@",NSStringFromCGRect(rect));

答案 2 :(得分:1)

检查一下:

CGPoint origin = {10, 20};
CGSize size = {100, 200};
CGRect rect = {origin, size};