в ios5 и более поздних версиях вы можете легко настроить его с помощью протокола. Все контроллеры представления и элементы пользовательского интерфейса теперь соответствуют этому протоколу. Обычно в UIView есть два разных типа методов, которые могут получить доступ к протоколу UIAppearance: либо + (id)appearance, либо + (id)appearanceWhenContainedIn:(Class )ContainerClass.
С помощью первого метода вы можете настроить только одну панель навигации за раз. Итак, если вы хотите настроить все экземпляры панели навигации, которые вы будете использовать;
[[Вид UINavigationBar] setTintColor:myColor];
Или, если вы хотите настроить панель навигации в зависимости от ее положения и места, которое вы обычно используете,
[[UINavigationBar appearanceWhenContainedIn:[UIViewController class], nil]
setTintColor:myNavBarColor];
Это изменит все существующие навигационные контроллеры внутри контроллера представления.
Но до ios5 еще проще установить цвет оттенка панели навигации для определенного контроллера представления, и это всего лишь строка кода, например;
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
Но, если вы создаете панель навигации, которая не является частью контроллера навигации, а просто контроллером представления, сохраните для нее выход и настройте ее, как указано выше, или,
[self.navigationBar setTintColor:[UIColor violetColor]];
В представленииDidLoad;
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;
}
person
Sandeep
schedule
23.11.2012