我已经看到使用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()
的上述替代方案是否合适,我只想了解其原因/工作原理。
答案 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};