MainstoryboardとSimulatorでは、ナビゲーションバーとボタンに無地の色が表示されます。しかし、実際のiPhoneまたはiPadで実行すると、この白いグラデーションが自分の色で得られます。それを削除する方法はありますか?
iPhone画像 改善画像
MainstoryboardとSimulatorでは、ナビゲーションバーとボタンに無地の色が表示されます。しかし、実際のiPhoneまたはiPadで実行すると、この白いグラデーションが自分の色で得られます。それを削除する方法はありますか?
iPhone画像 改善画像
iOS5以降では、プロトコルを使用して簡単にカスタマイズできます。すべてのViewControllerとUIElementsがこのプロトコルに準拠するようになりました。通常、UIViewには、 +(id)appearance または +(id)appearanceWhenContainedIn:(Class)ContainerClassのいずれかのUIAppearanceプロトコルにアクセスできる2つの異なるタイプのメソッドがあります。
最初の方法では、一度に1つのナビゲーションバーのみをカスタマイズできます。したがって、ナビゲーションバーのすべてのインスタンスをカスタマイズする場合は、使用します。
[[UINavigationBarの外観]setTintColor:myColor];
または、通常使用する位置と配置場所に基づいてナビゲーションバーをカスタマイズするように設定する場合は、
[[UINavigationBar appearanceWhenContainedIn:[UIViewController class], nil]
setTintColor:myNavBarColor];
これにより、ViewController内にあるすべての既存のナビゲーションコントローラーが変更されます。
ただし、以前のios5では、特定のView Controllerのナビゲーションバーの色合いを設定する方がさらに簡単で、次のようなコード行にすぎません。
[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;
}