هل هناك طريقة لاستخدام صورة محددة مخصصة لـ UitabbarItem؟

StackOverflow https://stackoverflow.com/questions/3461867

  •  27-09-2019
  •  | 
  •  

سؤال

أرغب في الحصول على صورة محددة مخصصة عندما يقوم المستخدم بتحديد عنصر على شريط علامة التبويب ، بشكل افتراضي ، يحدده الأزرق مثل ولكنه يرغب في الحصول على لون أخضر بدلاً من ذلك. شيء مثل أي أفكار؟

alt text

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

المحلول

فقط وجدت الحل الخاص بي. في الأساس ، قمت بتصنيف 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.

انظر هنا للحصول على صورة تصف Todos

في 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"]];
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top