Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 什么';将iPad应用程序转换为两种查看模式的最佳方式是什么?_Objective C_Ios6_Xcode4.6_Landscape Portrait - Fatal编程技术网

Objective c 什么';将iPad应用程序转换为两种查看模式的最佳方式是什么?

Objective c 什么';将iPad应用程序转换为两种查看模式的最佳方式是什么?,objective-c,ios6,xcode4.6,landscape-portrait,Objective C,Ios6,Xcode4.6,Landscape Portrait,我有一个现有的iPad应用程序(XCode 4.6、iOS 6.2、ARC和故事板)。它当前仅以纵向模式在应用商店中;我有几次请求使用横向模式。不幸的是,所有的线条等都是使用CG方法绘制的,并受到数学控制。这是在纵向模式下的外观: 这就是它在横向模式下的样子: 我的问题是:我在哪里可以找到一些好的文档,这些文档将为我提供将此应用程序转换为两种模式所需的基本步骤,因为我知道图形是通过数学控制的?如果图形是通过数学控制的,最好的方法是将所有坐标引用到父视图的尺寸,特别是属性self.view.b

我有一个现有的iPad应用程序(XCode 4.6、iOS 6.2、ARC和故事板)。它当前仅以纵向模式在应用商店中;我有几次请求使用横向模式。不幸的是,所有的线条等都是使用CG方法绘制的,并受到数学控制。这是在纵向模式下的外观:

这就是它在横向模式下的样子:


我的问题是:我在哪里可以找到一些好的文档,这些文档将为我提供将此应用程序转换为两种模式所需的基本步骤,因为我知道图形是通过数学控制的?

如果图形是通过数学控制的,最好的方法是将所有坐标引用到父视图的尺寸,特别是属性self.view.bounds,该属性随设备的旋转而变化

然后,当方向改变时,必须重新绘制接口。一个很好的方法是在方法内部:

-(void)viewWillLayoutSubviews
如果在过去使用CG方法创建了一些自定义视图,那么最好的方法就是将所有内容引用到边界。这样,当你改变屏幕大小时,无论是通过旋转还是在iPhone上使用,它都可以不经修改地工作

更新 假设你有一个点(76.8512.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%


你明白了。

如果它是用数学方法控制的,最好的方法是将所有坐标引用到父视图的维度,特别是引用随设备旋转而变化的属性self.view.bounds

然后,当方向改变时,必须重新绘制接口。一个很好的方法是在方法内部:

-(void)viewWillLayoutSubviews
如果在过去使用CG方法创建了一些自定义视图,那么最好的方法就是将所有内容引用到边界。这样,当你改变屏幕大小时,无论是通过旋转还是在iPhone上使用,它都可以不经修改地工作

更新 假设你有一个点(76.8512.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%



你明白了。

这看起来是使用CollectionView的最佳场所,为什么要使用CG绘制此图?CG是我唯一能找到正确行数和列数的方法。此外,整个底部视图必须像Excel一样滚动,其中左列和顶行随数据一起移动。如果需要,请尝试按照本教程进行操作,您可以将其应用到您的案例中。它将确保您的代码库更易于维护。是否可以使左列和顶行跟随滚动?(如电子表格中的“冻结”)当然,左列可以是节标题,顶部可以是单独的集合视图。你可以在
viewWillLayoutSubviews
中简单地调整视图的大小,这将自动处理单元格的重新定位。这看起来是使用CollectionView的最佳位置,为什么你要使用CG来绘制它?CG是我唯一能找到正确行数和列数的方法。此外,整个底部视图必须像Excel一样滚动,其中左列和顶行随数据一起移动。如果需要,请尝试按照本教程进行操作,您可以将其应用到您的案例中。它将确保您的代码库更易于维护。是否可以使左列和顶行跟随滚动?(如电子表格中的“冻结”)当然,左列可以是节标题,顶部可以是单独的集合视图。你可以在
viewWillLayoutSubviews
中简单地调整视图的大小,这将自动处理单元格的重新定位。Juan:你能给我指一些文档,这些文档将为我提供一些使用你所描述的内容进行绘图的指导吗?(我看过了,但显然没有正确的搜索词)是的,我明白了。。。非常感谢你。。。我要试一试,看看结果如何。。。我会再打给你的…很高兴帮助你!。顺便问一下,你的应用程序名是什么?@spokane dude我的回答对你有帮助吗?你决定做什么?我想把这个问题留到我可以进一步检查之前,特别是数学部分,如果你同意的话。。。没有忘记你…:朱安:你能给我指一些文件,这些文件能给我一些关于使用你所描述的绘画的指导吗?(我看过了,但显然没有正确的搜索词)是的,我明白了。。。非常感谢你。。。我要试一试,看看结果如何。。。我会再打给你的…很高兴帮助你!。顺便问一下,你的应用程序名是什么?@spokane dude我的回答对你有帮助吗?你决定做什么?我想把这个问题留到我可以进一步检查之前,特别是数学部分,如果你同意的话。。。没有忘记你…:D