一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
UIView的常见属性
@property (nonatomic) CGRect frame;
控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
@property (nonatomic) CGRect bounds;
控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的 x,y 一般为0)
@property (nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)
图片的两种加载方式:
1> imageNamed:
a. 就算指向它的指针被销毁,该资源也不会被从内存中干掉
b. 放到Assets.xcassets的图片,默认就有缓存
c. 图片经常被使用
2> imageWithContentOfFile:
a. 指向它的指针被销毁,该资源会被从内存中干掉
b. 放到项目中的图片就没有缓存
c. 不经常用,大批量的图片
懒加载
@property (nonatomic, strong) NSArray *dataArr;
// 懒加载
1. 用到的时候再加载
2. 全局只会被加载一次
3. 全局都可以使用
- (NSArray *)dataArr{
if(_dataArr == nil){
self.dataArr = @[
@{
@"name":@"ddd"
},
@{
@"name":@"ddd"
}
];
}
retrun _dataArr;
}
plist文件
直接将数据直接写在代码里,不是一种合理的做法,如果数据经常改,就要经常翻开对应的代码进行修改。造成代码扩展性低 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据,如果要变动数据,直接修改数据文件即可,不用修改代码 一般可以使用属性列表文件存储NSArray 和 NSDictionary 之类的数据,这种,属性列表文件,的扩展名是 plist,因此也称为 plist 文件。
NSArray *names = @[@"18",@"30"];
BOOL flag = [names writeToFile:@"/dd/name.plist" atomically:YES];
if (flag){
NSLog(@"写入成功");
}
解析plist文件
获得plist文件的全路径
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"shop" ofType:@"plist"];
// 加载plist文件
_shop = [NSArray arrayWithContentsOfFile:path];
字典转模型
@interface DDShop: NSObject
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *name;
//- (instancetype)initWithIcon:(NSString *)icon name:(NSString *)name;
//+ (instancetype)shopWithIcon:(NSString *)icon name:(NSString *)name;
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)shopWithDict:(NSDictionary *)dict;
@end
@implementation DDShop
- (instancetype)initWithIcon:(NSString *)icon name:(NSString *)name{
if(self = [super init]) {
self.icon = icon;
self.name = name;
}
return self;
}
+ (instancetype)shopWithIcon:(NSString *)icon name:(NSString *)name{
return [[self alloc] initWithIcon:icon name:name];
}
- (instancetype)initWithDict:(NSDictionary *)dict{
if(self = [super init]) {
self.icon = dict[@"icon"];
self.name = dict[@"name"];
}
return self;
}
+ (instancetype)shopWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
@end
- (NSArray *)dataArr{
if(_dataArr == nil){
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"shop" ofType:@"plist"];
// 加载plist文件
self.dataArr = [NSArray arrayWithContentsOfFile:path];
NSMutableArray *tempArray = [NSMutableArray array];
for (NSDictionary *dict in self.dataArr){
DDShop *shop = [DDShop shopWithDict:dict];
[tempArray addObject:shop];
}
self.dataArr = tempArray;
}
retrun _dataArr;
}