2012-04-16 52 views
3

我在iPhone应用程序的多个地方的代码中使用了常量坐标,特别是当我以编程方式创建视图时,设置uiview子类的属性。在iphone生产代码中使用常量x/y坐标是否安全

例如:

UIImage* img = [UIImage imageNamed:@"background.png"]; 
UIImageView *imgView = [[[UIImageView alloc] initWithImage: img] autorelease]; 
imgView.center = CGPointMake(160, 175); // --> Are these constant usages safe? 
[self.view addSubview: imgView]; 

我测试模拟器,设备3G和4S和它的作品上。 我应该担心未来的设备解决方案或其他问题吗? 如果是这样,我应该如何制作这段代码,更安全?这里的任何编码原则?

感谢 MBH

回答

3

在大多数情况下这不是什么大问题,但使用引用总是更好。

例如,如果图像视图位于屏幕中间,则可以使用screensize.width/2而不是160,理论上它是相同的,但首先,它更清楚您正在做什么;其次,如果屏幕要改变,你会做好准备。另一个例子是使用navigationBar.frame.size.height而不是44(它不可能改变)。另外,如果您参考了自己放置的其他视图,并移动了其中一个视图,则它们将随之移动;)。

总之,如果你有一个参考,你可以使用,否则,别担心。

+0

这是正确的,但只是指出,iOS目前自动处理不同屏幕尺寸之间的转换。即你指定去(160,175),这是它在旧手机和新手机上的位置,它将自动转到(320,350)。我假设他们在任何时候都会添加另一个新的解决方案,它也会处理这个问题,但正如答案所示,如果可以的话,最好能够处理一些事情。 – clarky 2012-04-16 03:53:31

+0

是的,但是这个(以及一些UI元素的大小)未来可能会改变。机会很低,但最好做好准备。另外,如果您想将代码移植到iPad上,则必须更改所有硬编码值。 – EmilioPelaez 2012-04-16 04:23:51

+0

我同意。只是想指出操作系统目前的工作方式。至于移植到iPad,您几乎可以肯定不会像使用iPhone那样使用相同的值。它需要重新设计,因此无论如何将完全分离代码。 – clarky 2012-05-15 15:30:39

0

也许 - 你只需要知道如何与你互动的的API进行详细解释值。空间翻转了吗?你调用的API是否可以解释这点?像素?笛卡尔坐标?等等。

相关问题