2012-08-07 43 views
6

我已经看到这种替代,以便用CGRectMake()初始化一个CGRect变量:CGRectMake替代

的CGRect帧=(的CGRect){0,0,10,10};

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

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

+0

如果两个语句创建字节的相同顺序它只是工作。 但是,我很困惑,你正在使用0和10而不是0.0和10.0。 0和10将被编译为整数常量,0.0和10.0会出现在als float/double常量中。因此,我怀疑你可以使用float作为合法框架来使用任何有用的东西。 CGRect是由CGPoint和CGSize组成的结构。它们都由两个CGFload成员组成(在CGPoint的情况下为x和y,在CGSize的情况下为宽度和高度)。 – 2012-08-07 08:54:20

回答

1

U可以使用这样的:

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

检查:

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