是否有可能创建仅半部分兼容iphone的应用程序,其他部分是通用的?

App*_*ple 1 iphone ipad ios

我正在开发一个应用程序,在它作为客户端要求,很少有视图兼容iPhone 4设备,其他视图兼容iPhone 4,5/iPad.那么在单一构建中是否可能?

我知道这是不可能的,但我想要你的建议.如果您有任何与此相关的链接,请与我分享.

Lui*_*oza 7

是的,可以为iPhone 3.5",iPhone 4"和iPad提供不同的视图.此外,您可以在每个不同的设备中实现不同的功能.但是,iOS用户界面指南建议您在不同设备上提供相同的功能.

无论运行何种设备,都可以保留应用程序的主要功能.即使一个版本可能提供比另一个版本更深入或交互式的任务呈现,但重要的是避免让用户感觉他们在两个完全不同的应用程序之间进行选择.

实际上,您可以使用此宏以编程方式编写分支以(以编程方式)构建视图:

#define isIpad() \
([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] && \
[[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad)

#define isWidescreen ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 )<DBL_EPSILON )
#define isIphone ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] )
#define isIpod   ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPod touch" ] )
#define isIphone5 ( isIphone && isWidescreen )
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用分叉和UIViewController消息为每个不同的设备创建不同的xib文件:- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil,以加载正确的文件.

最后,您可以在xib文件名中使用修饰符来在iphone和ipad之间加载不同的资源.例如:您的iPad UI具有FirstViewController.xib; 如果设备是iPhone(而不是FirstViewController.xib),你可以创建一个将由iOS自动加载的FirstViewController~iphone.xib.您可以查看答案以获取有关此主题的更多信息.

编辑

在你已经"iPhone只XIB文件"和你想运行的iPad上的情况下,你应该考虑到每个复制这些文件,并转换副本iPad的目标为这个回答说.然后,您可以重命名以"~ipad.xib"结尾的副本,这应该可以解决您的问题,但是,这些视图需要布局修订.