美文网首页
iOS基础总结_UI

iOS基础总结_UI

作者: 小黑Unity_齐xc | 来源:发表于2019-06-28 16:22 被阅读0次

    1、makeKeyWindow、makeKeyAndVisible

    keyWindow是指主窗口
    makeKeyWindow:把当前UIWindow作为主窗口;
    makeKeyAndVisible:把当前UIWindow作为主窗口,并显示出来;
    

    2、UIViewAutoresizing

    UIViewAutoresizing是一个枚举类型,用于UIView适配
    typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
        UIViewAutoresizingNone                 = 0, //默认值,不会随父视图的改变而改变
        UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,//自动调整view与父视图左边距,以保证右边距不变
        UIViewAutoresizingFlexibleWidth        = 1 << 1,//自动调整view的宽度,保证左边距和右边距不变
        UIViewAutoresizingFlexibleRightMargin  = 1 << 2,//自动调整view与父视图右边距,以保证左边距不变
        UIViewAutoresizingFlexibleTopMargin    = 1 << 3,//自动调整view与父视图上边距,以保证下边距不变
        UIViewAutoresizingFlexibleHeight       = 1 << 4,//自动调整view的高度,以保证上边距和下边距不变
        UIViewAutoresizingFlexibleBottomMargin = 1 << 5//自动调整view与父视图的下边距,以保证上边距不变
    };
    
    使用示例:
    self.mainTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    

    3、imageNamed与imageWithContentsOfFile区别

    两者都是用于实例化UIImage
    imageName在使用的时,系统会cache并管理cache,对于重复加载的图像,速度会提升很多,这样反而用户体验好,但是图片不宜过大;
    imageWithContentsOfFile在使用完成后,不会缓存,适用于不常使用的图片(如开启启动页)
    
    imageName基于assets中取图片;
    imageWithContentsOfFile基于Bundle取图片,要求图片不能放在assets中;
    

    4、IBAction

    该关键字用于告知Interface Builder,此方法是一个操作,且可以被某个控件触发;
    示例:
    -(IBAction) greenClick{
        NSLog(@"绿色点击");
    }
    添加关键字后,该方法左侧出现一个圆圈,可以用来与某控件连接,如Button
    

    5、IBOutlet

    关键字IBOutlet 是一个对象属性,用于引用另一个对象。
    该关键字用于告知 Interface Builder,在包含 IBOutlet 声明的对象与引用对象之间建立连接。
    示例:
    @property (nonatomic , weak) IBOutlet UILabel *label;
    添加关键字后,该方法左侧出现一个圆圈,可以用来与storyboard上的UILabel控件
    

    6、Xib(x指xml,ib指interface build)

    .xib编译后为.nib;
    .xib用于描述UI界面,可以是Controller,也可以是UIView;
    .xib常用于描述局部界面,如:自定义控件(自定义控件时,可通过class关联代码类)
    
    .xib可以放置多组控件,使用时获取出来是NSArray格式,获取方式:
    方式1:
    NSArray* array = [[NSBundle mainBundle]loadNibNamed:@"TestXib1" owner:nil options:nil];
    [self.view addSubview:array[0]];
    
    方式2:
    UINib *nib = [UINib nibWithNibName:@"TestXib1" bundle:[NSBundle mainBundle]];
    NSArray* array = [nib instantiateWithOwner:nil options:nil];
    [self.view addSubview:array[0]];
    
    

    7、initWithFrame、initWithCoder、awakeFromNib

    自定义控件时,会用到3个系统方法:initWithFrame、initWithCoder、awakeFromNib
    
    initWithFrame,如果控件是从代码[[XibShow alloc] initWithFrame方式创建的,会执行initWithFrame方法,从xib、storyboard中创建时,不会执行该方法;
    
    initWithCoder,如果控件是从xib、storyboard中创建时,会执行该方法;
    
    awakeFromNib,该方法是在initWithCoder之后调用;
    

    8、页面布局

    页面布局通常包含三种方式:手写代码、xib、storyboard
    1、xib通常用于封装控件,也可用于页面布局;
    2、storyboard主要用于页面布局,可包含多个View Controller,描述多VC直接的关系;
    
    xib用于页面布局时,controller名称与xib名称最好一致,不然加载不到;
    

    9、页面跳转
    跳转示例:

    xib跳转:
    BViewController* bc = [[BViewController alloc]init];
    bc.bprotocol = self; 
    bc.param = @"这是主页面参数";
     [self presentViewController:bc animated:true completion:nil];
    
    storyboard跳转:
    UIStoryboard* usb = [UIStoryboard storyboardWithName:@"AStoryboard" bundle:nil]; AViewController* ac = [usb instantiateViewControllerWithIdentifier:@"AViewController"];
    ac.block = ^(NSString *str) {
            NSLog(@"A页面协议回调:%@",str);
        };
    ac.param = @"这是主页面参数";
     [self presentViewController:ac animated:true completion:nil];
    

    10、页面间参数传递
    示例:A页面 ---> B页面 --> C页面

    1、A --> B , 可在B头文件中定义属性,A传属性即可;
    2、B --> A ,可在B头文件中定义协议、协议属性,B调用协议中定义的方法,回传参数,
    A的Controller实现协议,重写协议方法,接收B的数据(类似于Android的接口回调)
    3、B --> A, 可在B头文件中定义block回调、block属性,B通过block属性回传参数,
    A直接通过B的block属性接收B回传的数据;
    4、C --> A , 跨页面,可通过通知实现;
    

    相关文章

      网友评论

          本文标题:iOS基础总结_UI

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