2019-07-10 苹果App适配iOS13遇到的俩坑

2019-07-10  本文已影响0人  Duke_Young

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];
    }

今年的升级适配工作应该……可能……大概完成了吧。

上一篇 下一篇

猜你喜欢

热点阅读