【问题标题】:Converting ipad app to iphone5将 ipad 应用程序转换为 iphone 5
【发布时间】:2013-02-21 13:39:26
【问题描述】:

如何修改我的代码,以便相同的应用程序可以在具有相同 UI 元素的 iPhone 上运行。 我对 info Plist 进行了更改并使其具有通用性,但问题是我没有使用 stroryboard 或 nib 、 xib 文件来显示 UI 元素。我还硬编码了特定按钮或标签、框架等的高度和宽度。

那么有什么方法可以将屏幕自动调整为 ipad 视图到 iphone 或者我需要为 iPhone 编写具有新高度和宽度的每个代码?

就像在 android 中一样,我检测高度和宽度,并据此将其除以 2 或 3 以将特定的 UI 项目放置在不同的屏幕尺寸上。

另外,我怎样才能检测到该应用程序正在 iphone 4 或 iphone 5 或 iPad 上运行,以便我可以更改我的图像和值或高度 n 宽度?

【问题讨论】:

  • 嗯,你基本上是通过硬编码你的 UI 东西来打自己的脚 - 如果你有 nib 或故事板,你可能根本不需要更改任何代码。跨度>
  • 这意味着我没有任何选择开始新项目的支持,对吧?

标签: iphone ios ios5


【解决方案1】:

您可以使用以下方法获取屏幕边界:

[[UIScreen mainScreen] bounds];

您必须进行的更改数量取决于您之前设计代码的方式,如果您一直使用绝对值,那么您将遇到比使用相对值更多的问题......

【讨论】:

  • autoresizingmask 在我的情况下不起作用...您知道任何可以获取设备屏幕大小运行时间并将其设置为运行时间的高度和宽度的方法,例如“initWithFrame:CGRectMake(0, 0, getdevicewidth() , getdeviceheight())]" 然后我可以使用该高度和宽度自动根据设备屏幕尺寸设置每个 UI 元素,如 lebel 或 Textview
  • "initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width , [[UIScreen mainScreen] bounds].size.height]"
  • 我补充说但它需要纵向屏幕的价值而不是横向
  • 这可能取决于您在哪里检查它...所有视图都应该以纵向创建,然后旋转为横向...检查“viewDidAppear”
  • 任何避免纵向模式的建议..我在 plist 中进行了更改以在横向模式下显示,但我仍然得到纵向值
【解决方案2】:

您可以查看视图的 UIViewAutoresizingMask 属性,例如:

 view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

至于如何检查你是否在 iPhone 5 上,你可以使用这行代码:

BOOL isIPhone5 = [[UIScreen mainScreen ] bounds ].size.height == 568  ? YES : NO ;

【讨论】:

  • autoresizingmask 在我的情况下不起作用...您知道任何可以获取设备屏幕大小运行时间并将其设置为运行时间的高度和宽度的方法,例如“initWithFrame:CGRectMake(0, 0, getdevicewidth() , getdeviceheight())]" 然后我可以使用该高度和宽度自动根据设备屏幕尺寸设置每个 UI 元素,如 lebel 或 Textview
  • 据我所知,SDK 中没有方法,但您可以在实用程序类中创建自己的方法,即 +(float)getDeviceHeight{ return [[UIScreen mainScreen] bounds ].size.height; }
【解决方案3】:

为 iphone 和 ipad 创建单独的笔尖

在代码方面做得很好,那么您必须为所有组件设置框架,以代码方式检查设备是 ipad 还是 iphone。

Checking iPad or iPhone look here

【讨论】:

  • "...我没有使用故事板或 nib 文件来显示 UI 元素。我还硬编码了特定按钮或标签等的高度和宽度。"
  • 正如我所说我没有使用任何笔尖,我不想使用,因为我的应用程序都是图形和动画,如果我想为 iphone 和 ipad 创建笔尖文件,这意味着我必须开始新的项目从头开始......那么还有其他解决方案吗?..或者我如何检查设备是 iphone 或 ipad 的每个文件?
  • 我需要通过这个 UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 每次访问该类或 UI 元素类时进行检查?对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2013-02-12
  • 2011-04-10
  • 2011-05-21
相关资源
最近更新 更多