在Mainstoryboard和模擬器中,您會在導航欄和按鈕上獲得純色。但是,如果你運行在真正的iPhone或iPad上,你可以用你的顏色獲得這個白色漸變。有沒有辦法刪除它。刪除導航欄和按鈕上的白色漸變
iPhone圖片 改進的圖像
在Mainstoryboard和模擬器中,您會在導航欄和按鈕上獲得純色。但是,如果你運行在真正的iPhone或iPad上,你可以用你的顏色獲得這個白色漸變。有沒有辦法刪除它。刪除導航欄和按鈕上的白色漸變
iPhone圖片 改進的圖像
在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;
}
所以,我必須把這個代碼放在ViewController.m –
對於我的導航欄和按鈕我使用mainstoryboard來設置我的色彩... –
是的,他們都是正確的。 –
在模擬器和iPhone中,默認的UINavigationBar應該是相同的。 – allaire
您正在測試的設備最有可能是iOS 6,而模擬器版本是iOS 5.NavBar在iOS 6中具有默認的白色漸變。要刪除它,您只需自定義導航欄。 – Mazyod
我使用的xcode 4.5必須有ios6模擬器 –