在iPhone生产代码中使用恒定的x/y坐标安全吗

在iPhone生产代码中使用恒定的x/y坐标安全吗,iphone,objective-c,xcode,uiview,Iphone,Objective C,Xcode,Uiview,我在iPhone应用程序的几个地方使用了常量坐标,特别是当我以编程方式创建视图、设置uiview子类的属性时 例如: UIImage* img = [UIImage imageNamed:@"background.png"]; UIImageView *imgView = [[[UIImageView alloc] initWithImage: img] autorelease]; imgView.center = CGPointMake(160, 175); // --> Are the

我在iPhone应用程序的几个地方使用了常量坐标,特别是当我以编程方式创建视图、设置uiview子类的属性时

例如:

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

也许-您只需要知道与之交互的API将如何更详细地解释这些值。空间翻转了吗?您调用的API是否以点的形式解释了这一点?像素?笛卡尔坐标?等等。

在大多数情况下,这没什么大不了的,但最好使用参考资料

例如,如果您的图像视图位于屏幕中间,您可以使用
screensize.width/2
而不是
160
,理论上是一样的,但首先,您正在做的事情更清楚,其次,如果屏幕要更改,您会做好准备。另一个例子是使用
navigationBar.frame.size.height
而不是
44
(无论如何都不可能更改)。 此外,如果参照自己放置的其他视图,并移动其中一个视图,则所有视图都将随之移动;)


简而言之,如果你有一个可以使用的参考,就使用它,否则,别担心。

这是对的,但要指出的是,iOS目前自动处理不同屏幕大小之间的转换。i、 e.您指定going to(160,175),这是它在旧手机上的位置,在新手机上会自动转到(320,350)。我假设如果他们在任何时候添加另一个新的分辨率,它也会处理这个问题,但正如答案所说的,如果可以的话,最好处理一些事情。是的,但这(以及一些UI元素的大小)在将来可能会改变。机会很小,但最好做好准备。另外,如果你想把你的代码移植到iPad上,你必须改变你所有的硬编码值。我同意。只是想指出操作系统目前是如何工作的。至于移植到iPad,几乎可以肯定的是,您使用的值与在iPhone上使用的值不同。它需要重新设计,因此无论如何都会有完全独立的代码。