sha*_*sha 15 iphone objective-c interface-builder orientation ipad
现在设计多方位iPad应用程序的正确方法是什么?我已经阅读了很多Apple文档,网络资源和一些SO Q&A.这是我最初的要求:
header.png和header-landscape.pngUIImageView).那我该怎么办?
willRotate处理程序中的底层视图?到目前为止,这个问题的正确方法是什么?
Nat*_*ate 17
我实际上认为这是一个非常复杂的主题,就像大多数架构问题一样.我不相信你应该尝试用一种技术解决问题.
为了不在本页面上排除所有其他答案,我在我的博客上发布了一个完整的文章,并提供了一些示例代码的链接
应该首选在.xib文件中表达您的UI,尽管您允许自己偏离此范围的程度部分取决于将来修改您的应用程序的人员的技能组合.它可能不只是程序员!
应该强烈优先使用一个.xib文件和一个子类实现一个逻辑视图UIViewController.努力做到这一点真的很难.autoresizesSubviews=YES在XIB的根目录上进行设置view,并autoresizingMask根据屏幕大小/方向的变化正确调整子视图以进行灵活调整可能会有很长的路要走.
但是,这并不总是足够的. 如果您的布局需要横向调整,超出自动调整可以处理的范围,我使用两个主要选项.您应该选择哪一个取决于您的观点的内容.
如果纵向与横向的布局没有太大区别,那么我建议使用一个.xib,并在View Controller中使用一些代码来调整旋转布局.
如果横向与纵向差异非常重要,那么我建议每个方向都有一个.xib(具有严格的命名约定,如MyViewController.xib和MyViewController-landscape.xib).但是,两个.xib文件都应该将File的Owner连接到同一个View Controller类!对我来说,这是关键.
如果您要做除了首选替代方案之外的任何事情,我建议创建一个可重用的UIViewController基类来自动执行此操作,并使其保持一致.这比你最初想象的要多得多,而且在每个UIViewController需要轮换处理的子类中继续这样做是很愚蠢的.
我创建了这样一个基类,并将其放在一个示例项目中. 您可以看到一个Hello World示例,说明我应该如何处理所有三个场景:
FirstViewController)SecondViewController)ThirdViewController)我使用的RotatingViewController基类同样适用于iPhone应用程序.我实际上有一个更复杂的版本,处理维护iPad 和 iPhone,纵向和横向布局(对于通用应用程序).
但是,这个问题只是关于iPad,所以我将其剥离,以便更容易理解.
我的基类还有一个实用程序imageNamed:方法,可以帮助加载适合当前方向的图像(使用image-landscape.png约定命名).但是,我认为绝大部分时间都应该使用可伸缩的UIImages.
我没有这样做,但是当设备方向改变时,RotatingViewController它也可以尝试遍历它的subviews树并更新image属性UIButton或UIImageView对象.我没有那么长,但你可以.
有关这些建议的更多理由可以在我参考的博客文章中找到
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |