2012-11-23 67 views
3

在Mainstoryboard和模擬器中,您會在導航欄和按鈕上獲得純色。但是,如果你運行在真正的iPhone或iPad上,你可以用你的顏色獲得這個白色漸變。有沒有辦法刪除它。刪除導航欄和按鈕上的白色漸變

enter image description here iPhone圖片 改進的圖像

+0

在模擬器和iPhone中,默認的UINavigationBar應該是相同的。 – allaire

+0

您正在測試的設備最有可能是iOS 6,而模擬器版本是iOS 5.NavBar在iOS 6中具有默認的白色漸變。要刪除它,您只需自定義導航欄。 – Mazyod

+0

我使用的xcode 4.5必須有ios6模擬器 –

回答

10

在iOS5中,以後你可以用協議很容易定製。所有的視圖控制器和UI元素現在都符合這個協議。在UIView中通常有兩種不同類型的方法可以訪問UIAppearance協議:+(id)外觀+(id)appearanceWhenContainedIn:(Class)ContainerClass

使用第一種方法,您一次只能定製一個導航欄。所以,如果你想自定義導航欄的所有實例,你可以使用;

[[UINavigationBar appearance] setTintColor:myColor];

或者,如果你想基於其位置設置自定義的導航欄,並在那裏放置您通常會使用,

[[UINavigationBar appearanceWhenContainedIn:[UIViewController class], nil] 
     setTintColor:myNavBarColor]; 

這將修改所有現有的導航控制器的視圖控制器內。

但是之前的ios5,爲某些特定的視圖控制器設置導航欄色調甚至更容易,它只是一行代碼;

[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]]; 

但是,如果你創建的導航欄是不是導航控制器的一部分,但只是一個視圖控制器,然後保持一個出口,並自定義如上或

[self.navigationBar setTintColor:[UIColor violetColor]]; 

在viewDidLoad中;

UIImage *backgroundImage = [self drawImageWithColor:[UIColor blueColor]]; 
[self.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; 


-(UIImage*)drawImageWithColor:(UIColor*)color{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *imagePath; 
    imagePath = [[paths lastObject] stringByAppendingPathComponent:@"NavImage.png"]; 
    if([fileManager fileExistsAtPath:imagePath]){ 
     return [UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]]; 
    } 
    UIGraphicsBeginImageContext(CGSizeMake(320, 40)); 
    [color setFill]; 
    UIRectFill(CGRectMake(0, 0, 320, 40)); 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *data = UIImagePNGRepresentation(image); 
    [data writeToFile:imagePath atomically:YES]; 
    return image; 
} 
+0

所以,我必須把這個代碼放在ViewController.m –

+0

對於我的導航欄和按鈕我使用mainstoryboard來設置我的色彩... –

+0

是的,他們都是正確的。 –