2019-07-31更新
UIButton在图文混排时出现了错位
iOS13之前对齐时要按照图片尺寸来计算EdgeInsets
CGFloat w = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]}].width;
CGFloat wimg = btn.imageView.frame.size.width;
if ([Common iosVersion]<13) {
UIImage *img = btn.imageView.image;
wimg = CGImageGetWidth(img.CGImage)/[UIScreen mainScreen].scale;
}
return UIEdgeInsetsMake(30, -w/2-wimg/2, 0, -w/2+wimg/2);
想着已经iOS13已经beta2了,于是升级了Xcode-Beta跟iOS13,准备开始适配。于是……app黑屏了。
黑屏是因为UISearchField的一句代码
[[[searchField.subviews objectAtIndex:0].subviews objectAtIndex:0] removeFromSuperview];
根据Crashlytics显示崩溃的位置是
-[NSCache init]
-[_UISearchBarLayout applyLayout]
修改之后不黑屏了,但是打开app后很快闪退。研究发现是因为NSData的description方法发生了变化。
推送获取系统提供的deviceToken是NSData类型,在转换成NSString向后台发送时直接用的description获取的字符串然后replace掉<>,于是把description换成了
NSMutableString *devices_token_string = [NSMutableString string];
const char *bytes = deviceToken.bytes;
NSUInteger count = deviceToken.length;
for (int i = 0; i < count; i++) {
[devices_token_string appendFormat:@"%02x", bytes[i]&0x000000FF];
}
今年的升级适配工作应该……可能……大概完成了吧。