6

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

CGRect 框架 = (CGRect){0,0,10,10};

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

注意我不是在问是否适合使用上述替代方法CGRectMake(),我只是想了解它为什么/如何工作。

4

3 回答 3

8

这就是所谓的复合字面量。您可以在 Mike Ash 的这篇文章中阅读更多关于它们的信息:Friday Q&A 2011-02-18: Compound Literals

于 2012-08-07T09:03:48.480 回答
1

你可以这样使用:

CGRect rect = CGRectFromString(@"{{0, 0}, {612, 892}}"); // it contents { CGPoint origin;CGSize size;};
NSLog(@"rect : %@",NSStringFromCGRect(rect));
于 2012-08-07T09:01:04.067 回答
1

检查这个:

CGPoint origin = {10, 20};
CGSize size = {100, 200};
CGRect rect = {origin, size};
于 2013-09-09T09:17:27.047 回答