هل هناك طريقة لاستخدام صورة محددة مخصصة لـ UitabbarItem؟
-
27-09-2019 - |
المحلول
فقط وجدت الحل الخاص بي. في الأساس ، قمت بتصنيف Uitabitem وأضع هذا في وحدة تحكم التنقل:
-(void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0];
tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"];
self.tabBarItem = tabItem;
[tabItem release];
tabItem=nil;
}
إليك ما يبدو عليه فئة CustomTabbaritem:
@interface CustomTabBarItem : UITabBarItem
{
UIImage *customHighlightedImage;
}
@property (nonatomic, retain) UIImage *customHighlightedImage;
@end
تطبيق:
#import "CustomTabBarItem.h
@implementation CustomTabBarItem
@synthesize customHighlightedImage;
- (void)dealloc {
[customHighlightedImage release];
customHighlightedImage=nil;
[super dealloc];
}
-(UIImage *)selectedImage {
return self.customHighlightedImage;
}
@end
نصائح أخرى
في iOS 6 ، قمت بتغيير صورة TabBatitem المحددة مثل -
في طريقة تفويض وحدة تحكم Tabbar
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
من خلال هذا يمكنك تغيير صورتك.
أو يمكنك استخدامها مباشرة في طريقة View Controls Init (أو ViewWillAppear) ، مثل
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
أتمنى أن يساعدك هذا.
ما عليك سوى إضافة بعض المشاهدات المخصصة (باستخدام insertsubview: atindex :) عندما يتم استدعاء أساليب uitabbarcontroller-delegate.
مثال:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
يمكنك محاولة التغيير someIndex
نفسك حتى تحصل على النتيجة التي تريدها.
هذا لا يتم دعمه رسميًا في SDK. قد تكون قادرًا على التحقيق وضبط طرق عرض علامة التبويب في وقت التشغيل ، لكنك تخاطر برفض Apple.
تحرير: للاكتمال ، أود أن أذكر أن خيارك الآخر هو لفة uitabbar الخاصة بك.
بالنسبة إلى iOS5 وما فوق ، يمكنك القيام بذلك:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
أعتقد أنه يمكنك الآن القيام بذلك مع:
[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
عند استخدام ألواح القصص ، يمكنك ببساطة تحديد Tabbar's tabbar's tabbarcontroller ثم تغيير صبغة الصورة في مفتش الهوية. هذا يجب أن يعمل أيضا مع XIBS.
في AppDelegate.M
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
سيعطيك هذا لونًا أحمر ، وتغيير اللون مع اللون الذي تتمناه WhiteColor ، و BlueColor وما إلى ذلك ..
في بلدي uitabbarcontroller viewDidLoad:
, ، بناءً على إجابة ريزو:
for (int i = 0; i < [self.viewControllers count]; i++)
{
UIViewController* viewController = [self.viewControllers objectAtIndex:i];
if(i == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]];
}
else if(i == 1)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]];
}
}