最近一周一直很忙了,白天几乎没有看iOS的的时间,这第三天的视频我嫩是用了差不多4天的时间才看完,做完,说实话真的很累,今天是周六朋友叫我出去玩,我也没去这么多的学习任务在这儿如果不学好,我真的对不起自己的这么大得投入。
以下是第03天一些学习体会和笔记:
1、
instancetype 可以自动检查返回值的类型,非常好用。
按钮的本质:--> view view的本质UIImageView、Label
2、OC复习
*slef:在对象方法中,代表自己,即当前类的对象。
在类方法中,代表当前类。
*构造方法以 init开头
*类方法建议以类名开头。
*NSString 类型一般用copy。
*属性的本质:get和set方法,get和set的作用是封装成员变量,成员变量也叫字段。
*方法和函数:方法-->类里面的函数(仅仅是存在的位置不一样)。
*多态:父类指针指向子类对象(里氏替换原则)。
*重写init方法规范:
- (instancetype)initWithAge:(int)age andName:(NSString *)name
{
if (self = [super init]) {
self.age = age;
self.name = name;
}
return self;
}
3、写一个方法需要考虑的:
方法的功能 生成三个子控件,显示应用信息
方法的返回值
方法的参数
方法内部的代码
4、懒加载:程序第一次运行时才进行加载
//1 懒加载
- (NSArray *)appInfos
{
if (_appInfos == nil) {
//1.1 bundle
NSBundle *bundle = [NSBundle mainBundle];
//1.2 获取plist的路径
NSString *path = [bundle pathForResource:@"app" ofType:@"plist"];
//1.3 加载plist
_appInfos = [NSArray arrayWithContentsOfFile:path];
}
return _appInfos;
}
//文字大小
nameView.font = [UIFont systemFontOfSize:15];
//文字居中
nameView.textAlignment = NSTextAlignmentCenter;
//设置按钮文字的大小
downloadView.titleLabel.font = [UIFont systemFontOfSize:15];
//给按钮注册事件
[downloadView addTarget:self action:@selector(downloadClick) forControlEvents:UIControlEventTouchUpInside];
//1.4 字典转换模型
for (NSDictionary *dic in dicArray) {
CZAppInfo *appInfo = [[CZAppInfo alloc] init];
appInfo.name = dic[@"name"];
appInfo.icon = dic[@"icon"];
[tmpArray addObject:appInfo];
}
7、封装字典转模型:提供一个类方法(或对象方法)快速初始化对象。
+ (NSArray *)appInfosList
{
//1.1 bundle
NSBundle *bundle = [NSBundle mainBundle];
//1.2 获取plist的路径
NSString *path = [bundle pathForResource:@"app" ofType:@"plist"];
//1.3 加载plist
NSArray *dicArray = [NSArray arrayWithContentsOfFile:path];
NSMutableArray *tmpArray = [NSMutableArray array];
//1.4 字典转换模型
for (NSDictionary *dic in dicArray) {
//调用appinfo的类方法
CZAppInfo *appInfo = [CZAppInfo appInfoWithDic:dic];
[tmpArray addObject:appInfo];
}
return tmpArray;
}
它没有scene(场景)。
9、封装自定义view: view名与XIB文件一致。它是一个简单的MVC设计模式,即Model、View、Controller这三部分组成。
10、其它笔记:
// 透明度
tipView.alpha = 0;
//圆角
tipView.layer.cornerRadius = 5;
tipView.layer.masksToBounds = YES; //剪裁超过bounds的部分
//动画效果
[UIView animateWithDuration:1.0 animations:^{
tipView.alpha = 0.9;
} completion:^(BOOL finished) {
[UIView animateWithDuration:1.0 delay:3.0 options:UIViewAnimationOptionCurveLinear animations:^{
tipView.alpha = 0;
} completion:^(BOOL finished) {
//从父view中移除
[tipView removeFromSuperview];
//
self.superview.userInteractionEnabled = YES;
}];
}];
//取消和用户的交互
self.superview.userInteractionEnabled = NO;
sender.enabled = NO;