سؤال

لدي مشكلة مع صور عناصر Tabbar. قمت بتعيين صورة على كل عنصر من عنصر Tabbar ، لكن عندما أقوم بتشغيل التطبيق ، فإن الصورة الوحيدة التي تظهر هي صورة عنصر Tabbar الأول. لا تظهر صور عناصر Tabbar الأخرى حتى أقوم بتحديد إحدى علامات التبويب هذه. الرمز الذي أستخدمه لتعيين صورة على عنصر Tabbar هو ما يلي:

[self.tabBarItem setImage:[UIImage imageNamed:@"multi30x30.png"]];

[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"multi30x30.png"]
              withFinishedUnselectedImage:[UIImage imageNamed:@"multi30x30.png"]];

هل يستطيع احد مساعدتي؟

هل كانت مفيدة؟

المحلول

يمكنك تجربة هذا:

[[[self.tabBarController.viewControllers objectAtIndex:0] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"LocateIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"LocateIconInactive.png"]];

[[[self.tabBarController.viewControllers objectAtIndex:1] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"ProductsIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"ProductsIconInactive.png"]];

[[[self.tabBarController.viewControllers objectAtIndex:2] tabBarItem]setFinishedSelectedImage:[UIImage imageNamed:@"NextDeliveryIconActive.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"NextDeliveryIconInactive.png"]];

نصائح أخرى

[[tabBarController.tabBar.items objectAtIndex:0] setFinishedSelectedImage:[UIImage imageNamed:@"blabla1.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble1.png"]];
[[tabBarController.tabBar.items objectAtIndex:1] setFinishedSelectedImage:[UIImage imageNamed:@"blabla2.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble2.png"]];
[[tabBarController.tabBar.items objectAtIndex:2] setFinishedSelectedImage:[UIImage imageNamed:@"blabla3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"bleble3.png"]];

استخدم هذا الرمز:-

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


UITabBarController *tabBarController 
= (UITabBarController 
 *)self.window.rootViewController;

UIImage *selectedImage0 = [UIImage
   imageNamed:@"tb_inorganic_selected"];
UIImage *unselectedImage0 = [UIImage imageNamed:@"tb_inorganic_normal"];

UIImage *selectedImage1 = [UIImage imageNamed:@"tb_organic_selected"];
UIImage *unselectedImage1 = [UIImage imageNamed:@"tb_organic_normal"];

UIImage *selectedImage2 = [UIImage imageNamed:@"tb_acid_selected"];
UIImage *unselectedImage2 = [UIImage imageNamed:@"tb_acid_normal"];



UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];

[item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0];
[item1 setFinishedSelectedImage:selectedImage1 withFinishedUnselectedImage:unselectedImage1];
[item2 setFinishedSelectedImage:selectedImage2 withFinishedUnselectedImage:unselectedImage2];

يقوم بإنشاء وإرجاع عنصر جديد بعنوان محدد ، وصورة غير محددة ، وصورة محددة. إذا لم يتم توفير أي محدد ، يتم استخدام الصورة كصورة غير محددة ومحددة. بشكل افتراضي ، يتم إنشاء الصور الفعلية غير المحددة والمحددة تلقائيًا من قيم ألفا في الصور المصدر. لمنع تلوين النظام ، توفير الصور مع UIIMagerenderingModeAlwaysoriginal. توافر دائرة الرقابة الداخلية 7 و لاحقا.

UIImage *aImage = [UIImage imageNamed:@"a"]; 
aImage = [aImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UIImage *inaImage = [UIImage imageNamed:@"ina"];
inaImage = [inaImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.aController.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"title" image:inaImage selectedImage:aImage];

أفضل أن يقوم ViewController بذلك. لذلك ، في رأيي ، يجب تجاوز الحل الأفضل طريقة init وتعيين tabbaritem هنا.

من المحتمل أنك تفعل ذلك في ViewDidload وبالتالي يظهر العنصر الأول فقط.

آسف على أخطاء الإملاء.

سويفت 5.4

  tabBarController?.viewControllers?[index].tabBarItem.image = UIImage(named: "imageName")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top