我目前正在开发一个特定于iPad的应用程序。 由于我不使用界面构建器,因此每个视图元素都使用CGRectMake,其位置和大小具有特定的数字。
所以我想知道, 如果我在iPhone上使用相同的确切代码,这些数字会相应缩放吗? 或者我应该重新插入所有视图元素的数字? 如果是后一种情况,是否有任何简单的方法可以改变它?
答案 0 :(得分:1)
您必须更改iPhone应用的数字。 CGRectMake
使用的点数是像素,不会缩放,但iPhone 4等高清设备除外。
老实说,iPad是一个不同的设备,你的UI可能需要大量修改才能利用额外的屏幕空间。
答案 1 :(得分:1)
CGRect
坐标是绝对的,因此您的子视图不会自动缩小到iPhone。如果您在iPhone上运行代码,您将只看到iPad布局的左上角。
您可以非常轻松地编写一个辅助方法来获取原始CGRect
值并将其缩小以适应iPhone布局。但是,如果您还要绘制文本,则还需要缩小字体大小(这可能不起作用,因此您仍需要以可能的非自动方式处理文本)。 / p>
我现在基本上做同样的事情,编写一个可在iPad和iPhone上运行的应用程序,并在代码中将自身扩展到可用的维度。我通常将视图布局设置为可用屏幕大小的浮动比例,然后在渲染之前将这些比例转换为CGRect
。
不赞成使用Interface Builder的方式--BI可能是我在编程世界中见过的最荒谬的暴行(甚至比传统的ASP更糟糕,它说的是什么)。