使用tabBar setTranslucent的Xcode 4 + 5兼容代码

时间:2013-10-01 21:07:55

标签: ios objective-c xcode ios7

我正在尝试在iOS7应用中使用[tabBarController.tabBar setTranslucent:NO];。 但是,我希望使用xcode 4编译代码。

所以我在运行时检查iOS版本

float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
if (ver >= 7.0) {

在Xcode 4中使用[tabBarController.tabBar setTranslucent:NO];会产生错误..

'UITabBar'没有可见的@interface声明选择器'setTranslucent:'

因为iOS6中没有setTanslucent。

我有很多次尝试但是代码没有运行或导致错误......

  //UITabBar *tabBarr = [tabBarController tabBar];
    //if ([tabBarr respondsToSelector:NSSelectorFromString(@"setTranslucent")]) {
    //    [tabBarr setValue:NO forKey:@"setTranslucent"];
    //}

    //if ([tabBarr respondsToSelector:@selector(setTranslucent:)]) {
    //    [tabBarr setTranslucent:NO];
    //}

   // tabBarController.tabBar.superview.backgroundColor = [UIColor clearColor];

    //if ([tabBarr respondsToSelector:@selector(setTranslucent:)]) {
    //if ([[tabBarController.tabBar class] instancesRespondToSelector:@selector(setTranslucent:)]) {
        //[tabBarController.tabBar setTranslucent:NO];
        //[tabBarController.tabBar setBool:NO forKey:@"setTranslucent"];
     //   [tabBarController.tabBar setValue:NO forKey:@"setTranslucent:"];
    //}

我不确定还能尝试什么?

3 个答案:

答案 0 :(得分:1)

我定义宏而不是使用这些:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

使用类似:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7")) { ... )

查看问题是否与版本检查有关。

答案 1 :(得分:1)

您可以创建一个类别并再次定义property

@interface UITabBar (OldSDKCompatibility)
@property(nonatomic,getter=isTranslucent) BOOL translucent;
@end

答案 2 :(得分:0)

更正:此问题是您无法使用不在sdk中的功能。因此,请使用Xcode 4,不要使用该代码或使用Xcode 5。