ViewController_iPad.xib 与 ViewController~ipad.xib

Posted

技术标签:

【中文标题】ViewController_iPad.xib 与 ViewController~ipad.xib【英文标题】:ViewController_iPad.xib vs ViewController~ipad.xib 【发布时间】:2013-03-18 12:38:58 【问题描述】:

我正在编写一个教程,一些有趣的事情引起了我的注意。我刚刚创建了一个单一视图应用程序项目,我注意到两个 .xib 文件,一个名为 ViewController_iPhone.xib,一个名为 ViewController_iPad.xib。在我的项目中,如果我想为 iPhone 和 iPad 使用不同的 .xib,我会为 iPhone 使用 ViewController.xib,为 iPad 使用 ViewController~ipad.xib。我有点理解这可能是一个新的命名约定,但是如果我针对旧的 ios 版本,我可以使用这个命名约定事件吗? 这也发生在 xCode 4.6

谢谢。

【问题讨论】:

其实我不认为这是一个新的命名约定。我刚刚查看了 AppDelegate.m,发现它会检查设备类型,并加载适当的 .xib 文件,这对我来说非常愚蠢。 【参考方案1】:

我想你可能在 iOS 上遇到过通用应用程序,或者可能会根据设备加载 .xib 文件。无论哪种方式,您都应该使用 ~ipad 而不是 ~iPad~iphone 而不是 ~iPhone 让它正常工作。

两者在模拟器上的工作方式相同,但前一个会在设备上失效。

请从iOS Supports Device-Specific Resources 的 Apple 参考资料中找到摘录

iOS 支持特定于设备的资源

在 iOS 4.0 及更高版本中,可以将单个资源文件标记为仅在特定类型的设备上可用。此功能简化了您必须为通用应用程序编写的代码。您可以让捆绑加载例程选择正确的文件,而不是创建单独的代码路径来为 iPhone 加载一个版本的资源文件和为 iPad 加载不同版本的文件。您所要做的就是适当地命名您的资源文件。

要将资源文件与特定设备关联,您可以在其文件名中添加自定义修饰符字符串。包含此修饰符字符串会生成具有以下格式的文件名:

.

字符串代表资源文件的原始名称。它还代表您从代码访问文件时使用的名称。同样,字符串是用于标识文件类型的标准文件扩展名。该字符串是区分大小写的字符串,可以是以下值之一:

~ipad - The resource should be loaded on iPad devices only.

~iphone - The resource should be loaded on iPhone or iPod touch devices only.

【讨论】:

以上是关于ViewController_iPad.xib 与 ViewController~ipad.xib的主要内容,如果未能解决你的问题,请参考以下文章

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司

RESTfulREST 与 RESTful 理解与实践