我有两个阵列windscr并获胜。Windscr保留了描述,Winsize应该保留所需的Windows边界的值。请参阅下面。
Windscr还可以。然而,Winsize在2上显示了一个错误(预期表达式)。我没有这样做,难道根本不允许混合NSSTRING和计算吗?我在做什么错?
任何线索都会非常有帮助,tia,罗纳德。
NSArray *winDscr = [NSArray arrayWithObjects:
@"Auto",
@"2560-> 5:4",
@"2560->16:10",
@"2048-> 4:3",
@"1920-> 4:3",
@"1920->16:10",
@"A2 Portrait",
@"A2 Landscape",
@"A3 Portrait",
@"A3 Landscape",
nil];
NSArray *winSize = [NSArray arrayWithObjects:
@"Auto",
{2560,4*2560/5},
{2560,10*1920/16},
{2048,3*2048/4},
{1920,3*1920/4},
{1920,10*1920/16},
{[convertMMToPixel:420],[convertMMToPixel:594]},
{[convertMMToPixel:594],[convertMMToPixel:420]},
{[convertMMToPixel:297],[convertMMToPixel:420]},
{[convertMMToPixel:420],[convertMMToPixel:297]},
nil];
您有两个问题。
首先,{2560,4*2560/5}
本身不是有效的表达式。您可以通过编写(NSSize){2560,4*2560/5}
使其成为字面的NSSize
表达式。您也可以编写使用库功能的NSMakeSize(2560, 4*2560/5)
。
第二,NSArray
只能容纳Objective-C对象,而NSSize
不是Objective-C对象。您可以将NSSize
包装在NSValue
中,然后将包装器存储在数组中:
NSArray *winSize = [NSArray arrayWithObjects:
@"Auto",
[NSValue valueWithSize:(NSSize){2560,4*2560/5}],
[NSValue valueWithSize:(NSSize){2560,10*1920/16}],
...
提取大小:
NSValue *wrapper = winSize[2];
NSSize size = [wrapper sizeValue];
{2560,4*2560/5}
是具有两个成员的C结构,而不是Objective-C对象。nsArrays只能容纳对象。在尝试将它们添加到数组中之前,您需要将这些值保存在持有CGSize(valueWithCGSize:
)的NSVALUE中。
示例:
...arrayWithObjects:
@"Auto",
[NSValue valueWithCGSize:CGSizeMake(2560,4*2560/5)],
...