我最近将我的xcode项目改为iOS 7,而不是支持iOS 5。 在应用程序启动后立即进行此更改后,我会在控制台中收到此消息。
-[UICachedDeviceWhiteColor shadowColor]: unrecognized selector sent to instance 0x156f22f0
我不确定是什么原因造成的。但是使用调试器似乎我的app委托在第一行代码崩溃了。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.rootViewController = self.tabBarController; //this line is where it crashes
[self.window makeKeyAndVisible];
任何帮助将不胜感激
答案 0 :(得分:85)
你可能做了我所做的事情,过度切割并替换了UITextAttributeTextShadowColor和UITextAttributeTextShadowOffset的编译器警告。所以你的代码看起来像这样:
NSDictionary *titleAttributes = @{UITextAttributeTextColor: [UIColor whiteColor],
UITextAttributeTextShadowColor: [UIColor blackColor],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(1, 0)],
UITextAttributeFont: [UIFont titleBolder]};
[[UINavigationBar appearance] setTitleTextAttributes:titleAttributes];
并用NSShadowAttributeName替换它们,最后得到一些像这样的代码:
NSDictionary *titleAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
NSShadowAttributeName: [UIColor blackColor],
NSShadowAttributeName: [NSValue valueWithUIOffset:UIOffsetMake(1, 0)],
NSFontAttributeName: [UIFont titleBolder]};
[[UINavigationBar appearance] setTitleTextAttributes:titleAttributes];
您需要做的是拥有一个属性NSShadowAttributeName,并创建一个包含阴影颜色和阴影偏移的NSShadow实例。
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor blackColor];
shadow.shadowOffset = CGSizeMake(1, 0);
NSDictionary *titleAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
NSShadowAttributeName: shadow,
NSFontAttributeName: [UIFont titleBolder]};
[[UINavigationBar appearance] setTitleTextAttributes:titleAttributes];
答案 1 :(得分:0)
由于为属性字符串提供了不同的NSAttributedString.key和值而出现了此问题。
错误 : 让prefixAttribute = [ NSForegroundColorAttributeName:UIFont(名称:“ HelveticaNeue-Light”,大小:11.0), NSFontAttributeName:UIColor.darkGray]
已解决: 让prefixAttribute = [ NSFontAttributeName:UIFont(名称:“ HelveticaNeue-Light”,大小:11.0), NSForegroundColorAttributeName:UIColor.darkGray]
我已经将colorarrtibute与字体互换了,反之亦然