163,如何实现懒加载——getter方法

来源:互联网 发布:mac常用软件2017 编辑:程序博客网 时间:2024/06/03 10:22

知识点:

1,如何实现懒加载?

2,简化代码

3,按钮的创建,设置事件,禁掉或开启按钮


#import "ViewController.h"


@interface ViewController ()


@property(strong,nonatomic)IBOutlet UILabel *noLabel;

@property(strong,nonatomic)IBOutlet UIImageView *picImage;

@property(strong,nonatomic)IBOutlet UIButton *leftBtn;

@property(strong,nonatomic)IBOutlet UIButton *rightBtn;

@property(strong,nonatomic)IBOutlet UILabel *descLabel;


@property(assign,nonatomicint index;

@property(strong,nonatomicNSArray *arrayInfo;


@end


@implementation ViewController

/*

 懒加载(延迟加载),通过getter方法实现

 效果:让对象在最需要的时候,才创建

*/

-(NSArray *)arrayInfo{

    if (_arrayInfo ==nil) {

        NSDictionary *dic1 =@{@"name":@"biaoqingdi",@"desc":@"傻孩子!"};

        NSDictionary *dic2 =@{@"name":@"bingli",@"desc":@"病历!"};

        NSDictionary *dic3 =@{@"name":@"chiniupa",@"desc":@"吃牛扒!"};

        NSDictionary *dic4 =@{@"name":@"danteng",@"desc":@"蛋痛!"};

        NSDictionary *dic5 =@{@"name":@"wangba",@"desc":@"王八!"};

        _arrayInfo = @[dic1,dic2,dic3,dic4,dic5];

    }

    return_arrayInfo;

}


//懒加载不仅可以应用到延迟加载数据,还可以延迟加载控件,这样就不用考虑数据和控件的加载顺序了,而且,这样做能提高程序执行的效率

-(UILabel *)noLabel

{

    if (_noLabel ==nil) {

        _noLabel = [[UILabelalloc]initWithFrame:CGRectMake(0,20, self.view.bounds.size.width,20)];

        _noLabel.textAlignment =NSTextAlignmentCenter;

        //_noLabel.text = @"1/5";

        [self.viewaddSubview:_noLabel];

    }

    return_noLabel;

}


/*

 需要的控件有两个UILabel,一个ImageView和两个UIButton

 */


-(void)viewDidLoad{

    [superviewDidLoad];

    //添加图片序号,使用了懒加载,请看该加载形式跟下面其他形式的优缺点

    

    //添加图片控件

    CGFloat widthX = 200;

    CGFloat hightY = 200;

    CGFloat positionX = (self.view.bounds.size.width - widthX) * 0.5;

    CGFloat positionY = CGRectGetMaxY(self.noLabel.frame);//获取最大的y

    _picImage = [[UIImageViewalloc]initWithFrame:CGRectMake(positionX, positionY, widthX, hightY)];

    //_picImage.image = [UIImage imageNamed:@"biaoqingdi"];

    [self.viewaddSubview:_picImage];

    

    //添加左边按钮

    CGFloat positionX1 = positionX * 0.5;

    CGFloat positionY1 = _picImage.center.y;

    _leftBtn = [[UIButtonalloc]initWithFrame:CGRectMake(0,0, 20,20)];

    //设置事件

    [_leftBtnaddTarget:selfaction:@selector(clickButton:)forControlEvents:UIControlEventTouchUpInside];

    _leftBtn.tag = -1;

    _leftBtn.center =CGPointMake(positionX1,positionY1);

    [_leftBtnsetBackgroundImage:[UIImageimageNamed:@"left_normal"]forState:UIControlStateNormal];

    [_leftBtnsetBackgroundImage:[UIImageimageNamed:@"left_highlighted"]forState:UIControlStateHighlighted];

    [self.viewaddSubview:_leftBtn];

    

    //添加右边按钮

    CGFloat positionX2 = self.view.bounds.size.width -  positionX *0.5;

    CGFloat positionY2 = positionY1;

    _rightBtn = [[UIButtonalloc]initWithFrame:CGRectMake(0,0, 20,20)];

    //设置事件

    [_rightBtnaddTarget:selfaction:@selector(clickButton:)forControlEvents:UIControlEventTouchUpInside];

    _rightBtn.tag =1;

    _rightBtn.center =CGPointMake(positionX2,positionY2);

    [_rightBtnsetBackgroundImage:[UIImageimageNamed:@"right_normal"]forState:UIControlStateNormal];

    [_rightBtnsetBackgroundImage:[UIImageimageNamed:@"right_highlighted"]forState:UIControlStateHighlighted];

    [self.viewaddSubview:_rightBtn];

    

    //添加描述文字

    CGFloat positionY3 = CGRectGetMaxY(_picImage.frame);

    _descLabel = [[UILabelalloc]initWithFrame:CGRectMake(0, positionY3,self.view.bounds.size.width,20)];

    //_descLabel.text = @"傻孩子";

    _descLabel.textAlignment =NSTextAlignmentCenter;

    [self.viewaddSubview:_descLabel];

    [selfclickButton:_rightBtn];

}



//左右按钮的点击事件

-(void)clickButton:(UIButton *)button{

    self.index += (int)button.tag;

    NSString *str = [NSStringstringWithFormat:@"%i/%i",self.index,5];

    self.noLabel.text = str;

    

    _picImage.image = [UIImageimageNamed:self.arrayInfo[self.index - 1][@"name"]];

    _descLabel.text =self.arrayInfo[self.index -1][@"desc"];

//    switch (self.index) {

//        case 1:

//            _picImage.image = [UIImage imageNamed:@"biaoqingdi"];

//            _descLabel.text = @"傻孩子!";

//            break;

//        case 2:

//            _picImage.image = [UIImage imageNamed:@"bingli"];

//            _descLabel.text = @"病历!";

//            break;

//        case 3:

//            _picImage.image = [UIImage imageNamed:@"chiniupa"];

//            _descLabel.text = @"吃牛扒!";

//            break;

//        case 4:

//            _picImage.image = [UIImage imageNamed:@"danteng"];

//            _descLabel.text = @"蛋痛!";

//            break;

//        case 5:

//            _picImage.image = [UIImage imageNamed:@"wangba"];

//            _descLabel.text = @"王八!";

//            break;

//    }

    //设置按钮是否可用

    _leftBtn.enabled = (self.index !=1);

    _rightBtn.enabled = (self.index !=5);

}


@end




0 0
原创粉丝点击