>这必须在iOS 5及更高版本上运行.不需要创建与previos版本的iOS的兼容性.
>如果可能的话,我希望在不同的NIB文件中定义纵向和横向UI.
>我的NIB文件将具有不同的UI元素不同的方式(像我将以header.png和header-landscape.png UIImageVIEw为例)不同的图像.
>应用程序将有几个屏幕,我需要能够切换每个方向.
那我该怎么办?
>每个屏幕创建一个VC,并在willRotate处理程序中替换底层视图
>每个方向创建一个VC?但是如何正确切换?
>只需重新排列元素就不行(我想),因为我不得不重新加载图像.
在代码中编写所有内容(我真的很讨厌这个想法)?
今天这个问题的适当方法是什么?
解决方法 我实际上认为这是一个非常复杂的课题,像大多数建筑问题.我不相信你应该尝试用一种技术来解决问题.为了不让这个页面上的所有其他答案,I posted a full-writeup on my blog和a link to some sample code,too
概要
应该优先在.xib文件中表达您的UI,尽管您允许自己偏离的程度部分取决于将来会修改您的应用程序的人员的技能.它可能不只是程序员!
首选方案
应该强烈建议用一个.xib文件和一个UIVIEwController子类实现一个逻辑视图.真的很难做到这一点.在XIB的根视图上设置autoresizesSubvIEws = YES,并且可以很好地调整儿童视图的自动调整Mask到flex,使其具有屏幕尺寸/方向的更改.
但是,这并不总是足够的.如果您的布局需要在横向进行调整,超出自动调整可以处理的,我使用两个主要选项.你应该选择哪一个取决于你的观点的内容.
选项一
如果纵向与横向的布局没有太大差异,那么我建议您使用一个.xib,并在视图控制器中添加一些代码来调整旋转布局.
选项二
如果景观与画像差异真的很大,那么我建议每个方向都有一个.xib(具有严格的命名约定,像MyVIEwController.xib和MyVIEwController-landscape.xib).但是,两个.xib文件应该将文件的所有者连接到同一个VIEw Controller类!对我来说,这是关键.
如果你要做任何事情,但首选的替代方案,我建议创建一个可重用的UIVIEwController基类自动化,并保持一致.这比起你以前想像的更多的工作,在需要旋转处理的每个UIVIEwController子类中都是很愚蠢的.
解
我创建了这样一个基类,而put it in a sample project here.你可以看到一个Hello World的例子,说明我应该如何处理所有三种情况:
>一个视图控制器和一个.xib,仅自动调整(我的FirstVIEwController)
>一个视图控制器和两个.xibs,它们之间切换自动化(我的SecondVIEwController)
>一个视图控制器和一个.xib,具有较小的旋转编程布局(ThirdVIEwController)
我使用的RotatingViewController基类同样适用于iPhone应用程序.我实际上有一个更复杂的版本,处理维护iPad和iPhone,纵向和横向布局(适用于通用应用程序).
但是,这个问题只是关于iPad,所以我把它删除了,更容易理解.
My base class还有一个实用程序imagenamed:方法,可以加载适合当前方向的图像(以image-landscape.png约定命名).不过,我认为stretchable UIImages should be used绝对是绝大多数时候.
我没有这样做,但是当设备方向改变时,RotatingVIEwController也可以尝试走它的子视图树并更新UIbutton或UIImageVIEw对象上的图像属性.我没有去那个长度,但你可以.
这些建议的更多理由可在on the blog post I reference
总结以上是内存溢出为你收集整理的iphone – 如何正确设计多方位iPad应用程序全部内容,希望文章能够帮你解决iphone – 如何正确设计多方位iPad应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)