22

我最近将我的 xcode 项目更改为仅 iOS 7 而不是支持 iOS 5。在应用程序启动后立即进行此更改后,我在控制台中收到此消息。

-[UICachedDeviceWhiteColor shadowColor]: unrecognized selector sent to instance 0x156f22f0

我不确定是什么原因造成的。但是使用调试器似乎我的应用程序委托在第一行代码处崩溃了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window.rootViewController = self.tabBarController; //this line is where it crashes

[self.window makeKeyAndVisible];

任何帮助,将不胜感激

4

2 回答 2

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];
于 2013-09-23T21:50:04.440 回答
0

这个问题是由于给属性字符串提供了不同的 NSAttributedString.key 和值。

错误 让prefixAttribute = [NSForegroundColorAttributeName:UIFont(名称:“HelveticaNeue-Light”,大小:11.0),NSFontAttributeName:UIColor.darkGray]

已解决: let prefixAttribute = [ NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 11.0), NSForegroundColorAttributeName: UIColor.darkGray]

我已将 colorarrtibute 与字体互换,反之亦然

于 2019-04-23T06:13:46.607 回答