2013-08-13 2 views
0

У меня есть изображение, которое я хотел бы использовать в качестве фона для UIToolBar в приложении iOS 5+. Фоновое изображение изменяется в соответствии с действиями, предпринимаемыми на представлении. Изображение больше, чем UIToolBar, поэтому изображение должно быть изменено как уменьшение, а не увеличение размера.Настройка фонового изображения UIToolBar

После рассмотрения других вопросов здесь, а также других исследований проблемы, рекомендуемая резолюция не работает. Эта рекомендация заключается в следующем:

UIImage *topimg = [[UIImage imageNamed:@"headerBar-Human.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[_headerBar setBackgroundImage:topimg forToolbarPosition:UIToolbarPositionTop barMetrics:UIBarMetricsDefault]; 

Я попытался с различными значениями в вызове UIEdgeInsetsMake не повезло. Проблема в том, что изображение вообще не отображается. Отображается синий фон панели инструментов по умолчанию.

Если я удалю функцию resizableImageWithCapInsets, изображение покажет, но только часть изображения, покрываемое прямоугольными координатами панели инструментов.

Я также попытался создать UIImageView, добавив изображение и добавив его на панель инструментов, но результаты остались прежними.

Есть ли у кого-нибудь предложения?

+0

Если вы хотите настроить UIToolBar или UINavigationBat, вам необходимо подклассифицировать его. – zbMax

+0

Начиная с iOS 5 вам не нужно подклассифицировать его. Существует метод backgroundImageForToolbarPosition: barMetrics: открыт Apple в iOS 5, чтобы добавить изображение в качестве фона. Здесь у меня проблема. –

ответ

1

Вы можете использовать эту функцию, чтобы изменить размер BackgroundImage:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize 
{ 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Я предлагаю называть эту функцию с вашим _headerBar.frame.size в качестве второго параметра.

+0

Я добавил это как категорию в UIImage, и он работает хорошо. благодаря! –

Смежные вопросы