CAGradientLayer * g = [CAGradientLayer layer]; UIColor * colourFrom = [UIColor colorWithRed:0.1 green:0.7 blue:0.3 alpha:1.0]; UIColor * colourTo = [UIColor colorWithRed:0.1 green:0.8 blue:0.4 alpha:1.0]; g.frame = self.view.bounds; g.cornerRadius = 10; g.startPoint = CGPointMake(0.0,0.5); g.endPoint = CGPointMake(1.0,0.5); g.colors = [NSArray arrayWithObjects:(id)[colourFrom CGColor],(id)[colourTo CGColor],nil];
2015年10月27日更新:仍然看到来自Crashlytics的这些崩溃.
2015年10月26日更新:我发现this thread on StackOverflow似乎与我所拥有的问题完全相同(但没有答案……),但他们使用的是Facebook / Twitter活动表,我不是.只是帮助诊断问题的东西.
刚刚向App Store发布了一个应用程序,我们看到Crashlytics中发生这种崩溃的用户比例很小(约2%):
它似乎只出现在iOS 9中,但它正在所有设备上发生.
Fatal Exception: NSInternalInconsistencyException Only RGBA or White color spaces are supported in this situation.
就个人而言,我正在运行带有9.1的iPhone 6,但我没有遇到这个问题.我也尝试过模拟器,但没有问题,所以我不确定这个bug是如何实际出现的.来自Crashlytics的堆栈跟踪如下.
好像UIColor正在被添加到NSDictionary而没有被编码,但我不会在应用程序中的任何地方这样做.它似乎也可能与UIRemoteViewController有关,但我没有在应用程序中使用它(除非使用Facebook登录导致 – 我尝试使用Facebook登录手机和模拟器,但我再也不能出现此错误).
有没有人知道可能导致这种情况的原因?
Thread : Fatal Exception: NSInternalInconsistencyException 0 CoreFoundation 6512725832 __exceptionPreprocess 1 libobjc.A.dylib 6869942144 objc_exception_throw 2 CoreFoundation 6512725528 +[NSException raise:format:] 3 Foundation 6528403996 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] 4 UIKit 6606881444 -[UIColor encodeWithCoder:] 5 Foundation 6528169072 _encodeObject 6 Foundation 6528197336 +[NSKeyedArchiver archivedDataWithRootObject:] 7 UIKit 6609904352 -[_UIAppearanceRecorder _recordInvocation:withClassName:containerClassNames:traitCollection:selectorString:forRemoteProcess:] 8 UIKit 6609884356 __54+[_UIAppearance _recordersExcludingSource:withWindow:]_block_invoke 9 CoreFoundation 6511594744 __65-[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:]_block_invoke 10 CoreFoundation 6511594448 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] 11 UIKit 6609883592 +[_UIAppearance _recordersExcludingSource:withWindow:] 12 UIKit 6611900724 UIViewServiceCurrentAppearanceSerializedRepresentations 13 UIKit 6610654700 +[_UIRemoteViewController _requestViewController:traitCollection:fromServiceWithBundleIdentifier:service:connectionHandler:] 14 UIKit 6610654160 +[_UIRemoteViewController requestViewControllerWithService:connectionHandler:] 15 UIKit 6609355772 __117-[NSExtension(UIViewControllerAdditions) instantiateViewControllerWithInputItems:listenerEndpoint:connectionHandler:]_block_invoke_2 16 libdispatch.dylib 6878402280 _dispatch_call_block_and_release 17 libdispatch.dylib 6878402216 _dispatch_client_callout 18 libdispatch.dylib 6878424496 _dispatch_main_queue_callback_4CF 19 CoreFoundation 6512427512 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ 20 CoreFoundation 6512418912 __CFRunLoopRun 21 CoreFoundation 6511561888 CFRunLoopRunSpecific 22 GraphicsServices 6701891720 GSEventRunModal 23 UIKit 6602887164 UIApplicationMain 24 MyApp 4296179280 main (main.m:16) 25 libdyld.dylib 6878603448 start
使用代码示例更新
这在应用程序中调用:didFinishLaunchingWithOptions:
// Make the app look pretty // Turn the status bar color white [[UIApplication sharedApplication] setStatusBarHidden:NO]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; // Nav bar: Background colour [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]]; // Nav bar: White text [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1.0],NSForegroundColorAttributeName,nil]]; // Nav bar: Tint colour [UINavigationBar appearance].tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TintNavBar"]]; // Tab Bar: Background color [[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]]; // Tab bar: Tint colour [UITabBar appearance].tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"gradientSmall"]]; // UIControlSegment: Change the colours to just white // @url https://stackoverflow.com/a/21484829/4027036 [[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[Ui getColour:UI_BODY_PRIMARY]} forState:UIControlStateNormal];
解决方法
所以在你的代码中检查一下.如果您的应用程序中有该代码,则使用纯色.
这里是我得出这个结论的几个链接:
1)IOS erro at Posting to Facebook with the native Share dialog – UICGColor encodeWithCoder
2)UIApperance and various crashes
3)UIApperance and various crashes
4)iOS 6 MFMailComposeViewController: Only support RGBA or the White color space,this method is a hack