ответ

-2

Это поможет вам изменить цвет навигационной панели & Tab бар

UINavigationController *navigationController; 
... 
navigationController.navigationBar.tintColor = [UIColor blackColor]; 

UITabBarController *tabBarCon; 
... 
tabBarCon.tabBar.tintColor = [UIColor blueColor]; 
+0

спасибо за ответ, но цвет фона должен быть градиентом, содержащим два шестнадцатеричных цвета. Как я могу это реализовать? – realuser

+0

Я не понимаю градиент, содержащий шестнадцатеричный цвет. Но я предлагаю вам обратиться к этому [link] (http://stackoverflow.com/questions/1979165/applying-background-gradient-to-a-grouple-table-cell), прежде чем продолжить. –

+0

У вас есть два цвета, которые являются двумя конечными точками, и градиент должен плавно перетекать от первого цвета ко второму. Единственное отличие здесь в том, что у пользователя есть два гексагональных цвета, которые ему нужно использовать, а не только один цвет. Это, по сути, особый градиент, и есть другие вопросы о SO, которые вызывают это, просто не так много с шестнадцатеричными цветами. – ekinnear

0

Для TabBar я была та же самая проблема с моим приложением, и я придумал следующее: в applicationDidFinishLaunching метод Я создал функцию для рисования градиента и использовал экземпляр моего UITabBarController для настройки правильного кадра градиента в зависимости от ширины устройства.

- (UIImage *)drawGradientInView:(UITabBarController *) tabBarVC { 
    CAGradientLayer *gradient = [CAGradientLayer layer]; 

    gradient.frame = CGRectMake(CGRectGetMinX(tabBarVC.tabBar.frame), CGRectGetMinY(tabBarVC.tabBar.frame), CGRectGetWidth(tabBarVC.view.frame), CGRectGetHeight(tabBarVC.tabBar.frame)); 

    gradient.colors = @[(__bridge id)[UIColor colorWithRed:220.0/255.0 green:220.0/255.0 blue:220.0/255.0 alpha:1.0].CGColor, (__bridge id)[UIColor whiteColor].CGColor]; 
    gradient.startPoint = CGPointMake(0.0, 0.5); 
    gradient.endPoint = CGPointMake(0.5, 0.5); 

    UIGraphicsBeginImageContext(gradient.bounds.size); 
    [gradient renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return gradientImage; 
} 

получить экземпляр UITabBarController

UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].windows.firstObject.rootViewController; 

установить градиент

[UITabBar appearance].backgroundImage = [self drawGradientInView:tabVC]; 

Я не уверен, что это правильный подход, но он сделал работу для меня.

Для Панели навигации, я подклассы его и настроить, что в layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    CAGradientLayer *gradient = [CAGradientLayer layer]; 

    gradient.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + CGRectGetHeight([UIApplication sharedApplication].statusBarFrame)); 
    gradient.colors = @[(__bridge id)[UIColor colorWithRed:220.0/255.0 green:220.0/255.0 blue:220.0/255.0 alpha:1.0].CGColor, (__bridge id)[UIColor whiteColor].CGColor]; 
    gradient.startPoint = CGPointMake(0.0, 0.5); 
    gradient.endPoint = CGPointMake(0.5, 0.5); 

    UIGraphicsBeginImageContext(gradient.bounds.size); 
    [gradient renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [self setBackgroundImage:gradientImage forBarMetrics:UIBarMetricsDefault]; 

} 

Надеется, что это поможет вам ..

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