2012-05-29 186 views

回答

-2

這將幫助你改變導航條&標籤欄

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

您有兩種顏色,它們是兩個端點,漸變應該從第一種顏色平滑流動到第二種顏色。這裏唯一的區別是realuser有兩個他需要使用的十六進制顏色,而不僅僅是一種顏色。這基本上是一個自定義漸變,並且還有其他一些關於這個問題的問題,只是沒有十六進制顏色。 – 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]; 

} 

希望這將幫助你..