iPadiPhone及Universal程序开发心得总结

iPadiPhone及Universal程序开发心得总结,第1张

概述1 因为iPad的universal只有一个binary,所以没有的函数和类要weak link,而且不能用条件编译(因为只能编译成3.2)。 判断是iPad还是iPhone: if ( UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiomPad ) {        NSLog ( @ " iPad " ) ; } else {        NS

1 因为iPad的universal只有一个binary,所以没有的函数和类要weak link,而且不能用条件编译(因为只能编译成3.2)。
判断是iPad还是iPhone:

if ( UI_USER_INTERFACE_IdioM () == UIUserInterfaceIdiomPad )
{
      
NSLog ( @ " iPad " ) ;
}
else
{
      
NSLog ( @ " iPhone " ) ;
}

2 调试的时候,iPad模拟器只能认为是iPad,这时候,用3.2编译,然后选到3.0模拟器环境,别点build,直接点run。

 

3 popover创建的时候一定要这么写(即使放在if条件里)这个十分重要!否则iPhone调试会出错

 

SettingController * settingController = [[ SettingController alloc ] initWithNibname : nil bundle : nil ] ;
    
    
if ( UI_USER_INTERFACE_IdioM () == UIUserInterfaceIdiomPad )
    
{        
        
UINavigationController * setting_navigationController = [[ UINavigationController alloc ] initWithRootVIEwController : settingController ] ;
        
        
Class popoverClass = NSClassFromString ( @ " UIPopoverController " ) ;
        
if ( popoverClass ) {
            
UIPopoverController * popover = [[ popoverClass alloc ] initWithContentVIEwController : setting_navigationController ] ;
            
popover . delegate = self ;
            
[ popover presentPopoverFrombarbuttonItem : sender permittedArrowDirections : UIPopoverArrowDirectionAny animated : YES ] ;
        
}
        
[ setting_navigationController release ] ;
    
}
    
else
    
{
        
[ self . navigationController pushVIEwController : settingController animated : YES ] ;
    
}
    
    
[ settingController release ] ;

4 相关设置:
Base SDK = iphone device 3.2
Target Devise Family = iPhone/iPad
iPhone OS Deployment Target = iphone device 3.1.3
程序Target的iPhone OS Deployment Target的build setting必须设置为3.13或者更早(这样会带来程序的兼容性问题,比如不能用3.2SDK里面的API,也不能使用在3.2SDK里面被Deprecated的API)

 

5 3.2的时候可以接iPhone真机以Universal的形式调试。

 

6 将一个现有的iPhone程序升级到支持iPad的方法:
1)选择Prject–>The Upgrade Current Target for iPad
2)这里会有两个选项,升级为Universal或者创建一个单独的iPad target

 

7 iPad 至少支持一个方向的180度旋转。推荐支持4个方向。并提供横向与纵向的启动画面。
1)default图片根据ipad的方向来变换方向设置:
filename Dimensions
Default-Portrait.png * 768w x 1004h
Default-PortraitUpsIDeDown.png 768w x 1004h
Default-Landscape.png ** 1024w x 748h
Default-Landscapeleft.png 1024w x 748h
Default-LandscapeRight.png 1024w x 748h
Default.png Not recommended

 

2)旋转方向时reload vIEw,重置控件大小:

- ( voID ) dIDRotateFromInterfaceOrIEntation : ( UIInterfaceOrIEntation ) fromInterfaceOrIEntation
{    
    
UIImageVIEw * logoVIEw = ( UIImageVIEw * )[ self . vIEw vIEwWithTag : logo_VIEW_TAG ] ;
    
logoVIEw . frame = CGRectMake (( self . vIEw . frame . size . wIDth - 320 ) / 2 , 50 , 320 , 120 ) ;
    
    
UITextVIEw * textVIEw = ( UITextVIEw * )[ self . vIEw vIEwWithTag : TEXT_VIEW_TAG ] ;
    
textVIEw . frame = CGRectMake ( 30.0 f , 200.0 f , self . vIEw . frame . size . wIDth - 60.0 f , 380.0 f ) ;
}

再一次见证了不用IB的方便,还有控件的大小尽量不要用具体的数字,用self.vIEw.frame.size.wIDth,….代替.如:
table = [[UItableVIEw alloc] initWithFrame:CGRectMake(0.0f,0.0f,self.vIEw.frame.size.wIDth,self.vIEw.frame.size.height) style: UItableVIEwStyleGrouped];

8 关于ICON图标,准备3张图:72×72(MyLargeIcon.png),57×57(Icon.png),48×48(MySmallicon.png)

 

updating…

总结

以上是内存溢出为你收集整理的iPad/iPhone及Universal程序开发心得总结全部内容,希望文章能够帮你解决iPad/iPhone及Universal程序开发心得总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存