我有一个现有的 iPad 应用程序(XCode 4.6、iOS 6.2、ARC 和 Storyboards)。它目前仅以纵向模式在 App Store 中;我有几个横向模式的请求。不幸的是,所有的线条等都是使用 CG 方法绘制的,并以数学方式控制。这是纵向模式下的样子:
这就是横向模式下的样子:
我的问题是:我在哪里可以找到一些好的文档,这些文档将为我提供将这个应用程序转换为两种模式所需的基本步骤,知道绘图是数学控制的?
我有一个现有的 iPad 应用程序(XCode 4.6、iOS 6.2、ARC 和 Storyboards)。它目前仅以纵向模式在 App Store 中;我有几个横向模式的请求。不幸的是,所有的线条等都是使用 CG 方法绘制的,并以数学方式控制。这是纵向模式下的样子:
这就是横向模式下的样子:
我的问题是:我在哪里可以找到一些好的文档,这些文档将为我提供将这个应用程序转换为两种模式所需的基本步骤,知道绘图是数学控制的?
如果它是数学控制的,最好的方法是将所有坐标引用到父视图的尺寸,特别是属性 self.view.bounds,它会随着设备的旋转而变化。
然后,当方向改变时,您必须重新绘制界面。一个很好的方法是在方法内部:
-(void)viewWillLayoutSubviews
如果过去使用 CG 方法做过一些自定义视图,那么最好的方法是将所有内容都引用到边界。这样,当您通过旋转或在 iPhone 上使用它来更改屏幕尺寸时,它无需修改即可工作。
更新 想象一下,您在 (76.8, 512.0) 有一个点,这恰好是 iPad 和纵向方向,宽度为 10%,高度为 50%。因此,对于每一对坐标,而不是使用绝对数字,您必须用父视图尺寸的分数替换它们:
// old drawing method
CGPoint oldPoint = CGPointMake(76.8, 512.0);
// new drawing method
CGFloat W = self.view.bounds.size.width;
CGFloat H = self.view.bounds.size.height;
CGPoint newPoint = CGPointMake(0.1 * W, 0.5 * H) // 76.8 = 0.1 * 768; 512 = 0.5 * 1024
在第二种情况下;当你改变方向时,边界会改变,坐标会得到新的值,但比例将与其他方向相同,水平为 10%,垂直为 50%。
你明白了。