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,nonatomic) int index;
@property(strong,nonatomic) NSArray *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
- 163,如何实现懒加载——getter方法
- ios-Swift中的懒加载和getter、setter方法
- Object_C的setter、getter方法实现
- 黑马程序员——OC 基础:setter和getter方法
- 玩转Eclipse — 自动生成setter和getter方法
- 玩转Eclipse — 自动生成setter和getter方法
- Objective-C类的setter方法getter方法如何写
- OC中setter方法与getter方法的内部实现
- Myeclipse中如何快捷键生成setter和getter方法?
- 如何在Dao层不用写getter()和setter()方法
- 如何实现“用户懒加载”
- 如何实现 ViewPager 懒加载
- 如何实现图片懒加载
- xcode 插件 批量生成属性的懒加载 getter
- as3——跳出方法,getter and setter,子类实施超类的译本
- Object_c基础——getter、setter方法和@property、self关键字
- iOS开发学习第十四课——实例变量可见度、方法、setter、getter
- getter和setter方法
- php高级函数【递归函数】
- 记录下过年要写的博客
- Plugin is too old, please update to a more recent version 解决办法 2016.1.2
- 使用keytool生成证书和秘钥
- /bin/sh^M:损坏的解释器: 没有那个文件或目录
- 163,如何实现懒加载——getter方法
- 文章标题
- [从头学数学] 第22节 表内乘法(一)
- 01 Matrix 杭电2015年12月校赛F (二维DP)
- Scala光速入门之Scala的基本语法、Array、Map、Tuple等
- Android Imageview中获取缓存图片添加水印
- BZOJ 3207 花神的嘲讽计划Ⅰ 可持久化线段树
- 树中点对距离
- SQLite数据库存储