1.
CGRect tmpRect = [label.text boundingRectWithSize:CGSizeMake(XScreenWidth-30-30, 1000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil] context:nil];
高度=tmpRect.size.height
但是有时候这样不对,因为我再4S上出现显示未完全的情况。这是因为获取到的应该是有余数,但是把末尾余数去掉了。所以可以利用这个方法来解决,就是向上取整。
ceilf(tmpRect.size.height) 就可以了
参考文章 :boundingRectWithSize计算文字高度不准问题
2.从二维码扫描中获取相关信息,并判断获取到的是否正确
str = [str stringByReplacingOccurrencesOfString:@"sn=" withString:@"***"];
strTest =@"***";
str = [str stringByReplacingOccurrencesOfString:@"&wmac" withString:@"###"];
NSRange star = [str rangeOfString:@"***"];//匹配得到的下标
NSRange end = [str rangeOfString:@"###"];//匹配得到的下标
NSLog(@"===str==%@",str);
if (!([str rangeOfString:strTest].location+14 != NSNotFound)) {//判断是否为空
str = [str substringWithRange:NSMakeRange(star.location+3,14)];//截取范围内的字符串
}else{
str = @"";
}
3.在NSUserDefaults 存储可变数组的问题解决
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *_arr = [NSMutableArray arrayWithCapacity:0];
NSMutableArray *mutableCopyArr = [NSMutableArray arrayWithCapacity:0];
mutableCopyArr = [userDefaults objectForKey:@"DeviceSN"];
_arr = [mutableCopyArr mutableCopy];
读取到的数据必须要用另一个数组接收,不然就会直接报错。
这些都是错的~~~如果想要修改保存过的数据,还是用字符串保险,也就是拼接。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
strMut = [deviceStr stringByAppendingString:[NSString stringWithFormat:@"%@*",_manager.ScanID]];
[userDefaults removeObjectForKey:@"Device"];
[[NSUserDefaults standardUserDefaults]synchronize];
[[NSUserDefaults standardUserDefaults ]setObject:strMut forKey:@"Device"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"===strmut%@",[userDefaults objectForKey:@"Device"]);
这句打印的话很重要,没有的话可能存储不了,在删了之后
4.uitableview隐藏多余的cell横线
_tableView.tableFooterView = [[UIView alloc] init];
网友评论