美文网首页iOS基础
适配iphone和iPad

适配iphone和iPad

作者: 阳vs阴 | 来源:发表于2019-04-18 17:30 被阅读0次

    一、分别开发iphone和iPad版本
    二、兼容开发iphone和ipad
    1、General -> Deployment info -> Devices ->Universal


    image.png

    xib:
    2、选中要适配的xib,例view.xib
    3、file -> duplicate,将文件命名为view_ipad.xib
    4、右键view_ipad.xib,open as -> source code, 找到targetrRuntime,将其修改为 targetRuntime="iOS.CocoaTouch.iPad"
    5、为UINib创建分类 UINib+Adapter

    @interface UINib (Adapter)
    
    + (UINib *)nibAdapter:(NSString *)name bundle:(nullable NSBundle *)bundleOrNil;
    
    @end
    
    #import "UINib+Adapter.h"
    
    @implementation UINib (Adapter)
    
    + (UINib *)nibAdapter:(NSString *)name bundle:(nullable NSBundle *)bundleOrNil{
        UINib *nib;
        if((UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)) {
            NSString *ipad = [name stringByAppendingString:@"_ipad"];
            nib = [UINib nibWithNibName:ipad bundle:bundleOrNil];
            
        }else{
            nib = [UINib nibWithNibName:name bundle:bundleOrNil];
            
        }
        return nib;
    }
    
    
    @end
    

    调用方法nibWithNibName: bundle:替换成nibAdapter: bundle:

    UIStoryboard
    前四步类似
    5、同样建立分类

    @interface UIStoryboard (Adapter)
    
    + (UIStoryboard*_Nullable)storyboardAdapter:(nonnull NSString*)name bundle:(nullable NSBundle*)storyboardBundleOrNil;
    
    @end
    
    #import "UIStoryboard+Adapter.h"
    
    @implementation UIStoryboard (Adapter)
    
    + (UIStoryboard*)storyboardAdapter:(NSString*)name bundle:(nullable NSBundle*)storyboardBundleOrNil{
        UIStoryboard *storyBoard;
        if((UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)) {
            NSString *ipad = [name stringByAppendingString:@"_ipad"];
            storyBoard = [UIStoryboard storyboardWithName:ipad bundle:storyboardBundleOrNil];
            
        }else{
            storyBoard = [UIStoryboard storyboardWithName:name bundle:storyboardBundleOrNil];
            
        }
        return storyBoard;
        
    }
    
    
    @end
    
    

    调用方法storyboardWithName:bundle:替换成storyboardAdapter: bundle:

    相关文章

      网友评论

        本文标题:适配iphone和iPad

        本文链接:https://www.haomeiwen.com/subject/tbbtgqtx.html