2015-02-16 2 views
1

все изображения, которые я разместил в Images.xcassets, поэтому я могу использовать изображения с помощью [UIImage imageNamed:]. но когда я открываю приложение, tabBar не показывает все значки, прежде чем переключать tabItem или ждать момента.UITabBarItem показать все изображение или показать изображение с задержкой

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
    [[UITabBar appearance] setTintColor:[UIColor colorWithRed:228/255.0 green:118/255.0 blue:54/255.0 alpha:1]]; 

    NSArray *tabBarItems = ((UITabBarController *)self.window.rootViewController).tabBar.items; 
    NSArray *tabBarItemsTitle = @[@"TabGift", @"TabOnly", @"TabMissfresh", @"TabMine", @"TabCart"]; 

    [tabBarItems enumerateObjectsWithOptions:NSEnumerationConcurrent 
             usingBlock:^(UITabBarItem *item, NSUInteger itemIndex, BOOL *stop) { 
              [item setTitle:NSLocalizedString(tabBarItemsTitle[itemIndex], tabBarItemsTitle[itemIndex])]; 
              UIImage *image = [UIImage imageNamed:tabBarItemsTitle[itemIndex]]; 
              [item setImage: image]; 
              if ([tabBarItemsTitle[itemIndex] isEqualToString:@"TabMissfresh"]) { 
               [item setSelectedImage:[[UIImage imageNamed:@"TabMissfreshSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
              } 
             }]; 
    return YES; 
} 

Когда я открываю приложение, TabBar выглядеть следующим образом: When I open my App, tabBar look like this Это мой Images.xcassets: This is my Images.xcassets

+1

Удар, у меня такая же проблема – AndrewSB

+0

столкнулся с этим недавно, @AndrewSB, если вам удастся найти проблему. Я предполагаю, что это то, что я делаю в своем коде – Kyle

+0

Я думаю, что я переключился на использование раскадровки, и мои проблемы исчезли – AndrewSB

ответ

0

Это потому, что вы используете блок заявление. Если вы хотите внести изменения в пользовательский интерфейс, вы должны сделать это через основной поток.

попробуйте этот код.

[tabBarItems enumerateObjectsWithOptions:NSEnumerationConcurrent 
     usingBlock:^(UITabBarItem *item, NSUInteger itemIndex, BOOL *stop) { 
     dispatch_sync(dispatch_get_main_queue(), ^{ 
      [item setTitle:NSLocalizedString(tabBarItemsTitle[itemIndex], tabBarItemsTitle[itemIndex])]; 
      UIImage *image = [UIImage imageNamed:tabBarItemsTitle[itemIndex]]; 
      [item setImage: image]; 
      if ([tabBarItemsTitle[itemIndex] isEqualToString:@"TabMissfresh"]) { 
       [item setSelectedImage:[[UIImage imageNamed:@"TabMissfreshSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
      } 
     }); 
     }]; 
+0

Объясните код. – gsamaras

Смежные вопросы