说明:本文记录一些开发中遇到的小技能点,如果你有更好的方法还望不吝赐教。👊
UITableView
做为最常用的UI控件,UITableview的人气那是相当的高啊。想象力没有天花板的设计大大(maybe产品菊苣)已经玩出了花(bian)样(tai)。下面来看一下如何满足他们。
- 和cell等宽的分割线
- iOS7的话,一句搞定(iOS7以上的话只有空cell的分割线才会顶到头部)
cell.separatorInset = UIEdgeInsetsZero;
//如果全部cell都要这样 可这样设置
self.tableView.separatorInset = UIEdgeInsetsZero;//就像tableview的rowHeight一样 - 哪有只支持iOS7的公司,so
//这两个属性均为Available in iOS 8.0 and later
cell.preservesSuperviewLayoutMargins = NO;
cell.layoutMargins = UIEdgeInsetsZero;
- zPosition属性可以明显改变屏幕上图层的顺序,但不能改变事件传递的顺序(摘自iOS核心动画高级技巧)
GCD
- 创建队列并设置优先级
dispatch_queue_t serialQueue = dispatch_queue_create("com.mapeng.serialqueue", DISPATCH_QUEUE_SERIAL);
dispatch_set_target_queue(serialQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0));```
#其他
1. UUID能够唯一标识每一台设备
- (NSString *)UUID {
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"HuangyibiaoAppID" accessGroup:@"com.huangyibiao.test.group"];
NSString *UUID = [wrapper objectForKey:(__bridge id)kSecValueData];
if (UUID.length == 0) {
UUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[wrapper setObject:UUID forKey:(__bridge id)kSecValueData];
}
return UUID;
}```
- 如果同时重写了属性的getter和setter方法,系统就不会生成对应的ivar。
- 手动创建 ivar
- 使用@synthesize propertyName = _propertyName;
- @import(模块)
模块在语义上把框架和import语句封装到了代码中,而不是把框架的内容复制粘贴到代码中。模块会把H个头文件预编译到动态链接库dylib中,并会自动链接,这样就能把编译时间从O(S*H)降低到O(S+H)。需在Build Setting下打开Enable Modules
NSArray
1.按字母顺序排序(Apple's documentation for details)
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];