0

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

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

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

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

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

因为 setTanslucent 在 iOS6 中不可用。

我进行了很多尝试,但是代码无法运行或导致错误...

  //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:"];
    //}

我不确定还能尝试什么?

4

3 回答 3

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")) { ... )

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

于 2013-10-01T21:25:11.530 回答
1

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

@interface UITabBar (OldSDKCompatibility)
@property(nonatomic,getter=isTranslucent) BOOL translucent;
@end
于 2013-10-03T11:54:31.230 回答
0

更正:这个问题是你不能使用不在 sdk 中的功能。因此使用 Xcode 4,不要使用该代码或使用 Xcode 5。

于 2013-10-03T11:47:56.273 回答