[UIImage imageWithRenderingMode:]:发送到实例的无法识别的选择器

Dee*_*kur 2 objective-c ios

我正在尝试显示原始标签栏图像.以下代码在iOS7中运行正常,但是ios 6.0上面的代码崩溃了.以下是代码AppDelegates didFinishLaunchingWithOptions

UITabBar *tb = tabBarControllerProperty.tabBar;
        NSArray *itemsObject = tb.items;
        for(UITabBarItem *tabItem in itemsObject)
        {
            UIImage *imaged = tabItem.image;
            tabItem.selectedImage = imaged;
            tabItem.image = [imaged imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];// crash for ios6, not in ios 7
        }
Run Code Online (Sandbox Code Playgroud)

Nik*_*uhe 12

从文档:

-[UIImage imageWithRenderingMode:]

可用性:适用于iOS 7.0及更高版本.

您必须检查该方法在运行时是否可用:

if ([imaged respondsToSelector:@selector(imageWithRenderingMode:)]) {
    tabItem.image = [imaged imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];// crash for ios6, not in ios 7
} else {
    // iOS 6 fallback: insert code to convert imaged if needed
    tabItem.image = imaged;
}
Run Code Online (Sandbox Code Playgroud)