NSMutableAttributing相关 ios7升级ios8出现的问题

项目在ios7上没有问题,但是升级ios8以后,出现了不少问题,其中一个追踪到就是在NSMutableAttributing的使用上出现的问题。

项目中有个功能是:有一串字符串,对指定位置的字符设置不同的颜色,就是使用NSMutableAttributedString来实现的:

NSMutableAttributedString *attibuttionStr = [[NSMutableAttributedString alloc] initWithString:str];

[attibuttionStr addAttribute:(NSString *)NSForegroundColorAttributeName

value:(id)firstColor.CGColor

range:oneRange];

在ios7上这样是能正常实现的

但是ios8上除了问题,程序崩溃,提示“

2014-09-23 13:30:50.224 RecordForStudy[17993:413448] *** Terminating app due to uncaught exception ‘NSInvalidArgumentException‘, reason: ‘-[__NSCFType set]: unrecognized selector sent to instance 0x7fcbcba07090‘

最终找出,

在ios8上用value:(id)firstColor.CGColor就会报错,

改成value:(id)firstColor就好了。

[attibuttionStr addAttribute:(NSString *)NSForegroundColorAttributeName

value:(id)firstColor

range:oneRange];

这样就好了。

总结:在ios7以及之前,value的值写

1、(id)firstColor.CGColor

或者直接写

2、(id)firstColor

都是没问题的,

但是在ios8上只能写成2、(id)firstColor这种样式才是正确的

时间: 2024-10-10 00:11:54

NSMutableAttributing相关 ios7升级ios8出现的问题的相关文章

升级iOS8和iOS9系统后,保险箱Pro、私人保险箱、私密相冊打开就闪退的官方解决方式

升级iOS8和iOS9.iOS10系统后,保险箱Pro.私人保险箱.私密相冊打开就闪退的官方解决方式 查看设备iOS操作系统版本号号办法:iPhone/iPad->设置->通用->关于本机->版本号 a.假设iPhone/iPad操作系统是iOS8.3之后(比方iOS8.3.iOS8.4.iOS9.iOS10),则关闭全部网络或开启飞行模式,看保险箱Pro还闪退不.假设不闪退,则立即进入闪退app(保险箱Pro.私人保险箱.私密相冊).上传全部照片和视频到手机系统相冊.以后使用这个

苹果5s升级ios8后无法正常使用siri

苹果5s于9月18日升级ios8,升级后效果很好,除去微博闪退,其他功能很正常. 更新完毕后使用wifi连接siri正常并且相应速度以及识别率很高,但是3G网络识别很慢,有卡顿现象,能提供服务 9月19日早上使用siri时候发现以下情况请看图片!

iOS7、iOS8推送通知的区别

iOS8版本以后的推送通知代码[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];//注意下面这句,在iOS8

iphone5 从ios7升级到最新9.2

之前也是犹豫到底升还是不升(之前一直ios7), 参考了知乎浩子意见及其他贴吧里的一些升级情况,然后考虑到苹果9.2主要是修复之前的bug.那么一定比9.1好很多喽?.. 不再犹豫和纠结,大不了换新iphone,果断升级! 直接在手机里通过OTA升级的,只能说好慢好慢....插着电源直接把屏幕扣在桌上由它自己升级..... 期间看了几眼,印象中她重启了两三次.. 当当!貌似已经升级好了,自己开机了.解锁(密码跟之前一样,还是4位,不是传说中的6位)后提示"slide to setup"

iOS7和iOS8之后的弹窗的使用

在iOS7之前的弹窗都是使用的传统的UIAlertView,代码如下: //创建弹框 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"输入的数字不合理" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil]; //显示弹框 [alertView show]; 在iOS8以

解决iOS7和iOS8的UITableViewCell的分割线右移问题

iOS7系统时: _tableView.separatorInset = UIEdgeInsetsZero; iOS8系统时: 首先在viewDidLoad方法中加上如下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSel

(七十五)CoreLocation(一)在iOS7和iOS8设备上获取授权

苹果在iOS8上更新了CoreLocation的授权获取方式,在原来的基础上,不仅需要调用授权函数,还需要对info.plist进行相应的配置. 在iOS上获取经纬度使用的是CoreLocationManager,它来自CoreLocation.framework框架,使用时应当包含框架的总头文件: #import <CoreLocation/CoreLocation.h> 一般是先创建管理者,然后成为其代理,对于iOS7,直接调用startUpdatingLocation即可开始监听,而对于

升级iOS8系统后,保险箱Pro、私人保险箱、私密相册打开就闪退的官方解决方案

  写在前面的话: 1.   本文适用条件    适用于:您的保险箱Pro.私人保险箱.私密相册在iPhone或iPad升级到iOS8系统后,一打开就闪退,无法进入程序:app图标如下:             2.   不要删除闪退app    请不要删除闪退app,因为数据都在里面:如果你不小心删除了,请检查删除app前你是否将iPhone或iPad数据备份到电脑iTunes或iCloud上,如果备份过,是可以恢复闪退app数据到iPhone或iPad的,请立即联系技术支持: 3.   官方

KeyBoard 在iOS7和iOS8上通知的区别

首先注册通知如下: NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name:UIKeyboardWillChangeFrameNotification, object:nil) 通知内容: func keyboardWillShow(noti:NSNotification){ var userInfo :NSDictionary = noti.userInfo!