【问题标题】:Is it safe to use constant x/y co-ordinates in iPhone production code在 iPhone 生产代码中使用常量 x/y 坐标是否安全
【发布时间】:2012-04-16 01:06:39
【问题描述】:

我在我的 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 设备上对其进行了测试,并且可以正常工作。 我应该担心未来的设备分辨率或任何其他问题吗? 如果是这样,我应该如何使这段代码更安全?这里有什么编码原则吗?

谢谢 兆赫

【问题讨论】:

    标签: iphone objective-c xcode uiview


    【解决方案1】:

    在大多数情况下这没什么大不了的,但使用参考总是更好。

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

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

    【讨论】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2010-10-08
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      相关资源
      最近更新 更多