2012-04-13 3 views
0

Я очень новичок в программировании на iOS. Я пытаюсь установить фон панели инструментов на пользовательский образ. Я также использую раскадровки. Как мне это сделать? Я редактирую UIToolbar в структуре UI Kit? Нужно ли что-то менять в Раскадке?iOS5 Toolbar background image

Спасибо,

+1

сделал и попытался что-нибудь, если да, то разместить код – WaaleedKhan

ответ

3

Вы можете использовать UIToolbar «S встроенный в -setBackgroundImage:forToolbarPosition:barMetrics: метод:

// portrait 
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Portrait.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 

// landscape 
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Landscape.png"] forToolbarPosition:UIToolbarPositionAny barMetrics: UIBarMetricsLandscapePhone]; 
  • YourToolbarBkg-Portrait.png будет 320x44 BKG изображения для портретного режима
  • YourToolbarBkg-Landscape.png будет 480x32 BKG изображения для ландшафтного режима.
1

Вместо редактирования UIToolbar, почему бы не создать UIView того же размера и кожи, но вы хотели бы? Это было бы легче, если вы новичок.

Или, если вы хотите переопределить UIToolbar:

@implementation UIToolbar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"image.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 
+0

я постараюсь UIView первым. но в остальном я добавляю это в uitoolbar.h? –

+1

Я использовал этот подход в своем последнем приложении, создав UIView, в котором я нуждался в loo-and-feel без каких-либо ограничений UIToolbar, который имеет очень специфическое использование в соответствии с Apple HIG. – MystikSpiral

2

UIToolbar наследует от UIView. Это просто работал для меня:

[topBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:BAR_BKG_IMG]] autorelease] atIndex:0]; 

ОБНОВЛЕНО

topBar ------ это выходное отверстие UIToolbar у используется

использовать этот код, где и создаем ур UIToolbar в класс, который реализует UIToolbar .. плюс скажите мне, используя панель инструментов у Ки что ур главная цель это

+0

В какой файл я его вставляю? извините im совершенно новый для ios ... –

0

Был правый фокус с фоном для ToolBars и NavBars. Я знаю, что установка фонового изображения NavBar и ToolBar - это, как правило, ловушка. Но, когда вы представляете модальные VC, по какой-то безумной причине, когда добавляется NavBar, и вы меняете фоновое изображение, оно, похоже, удваивается. Изменение высоты имеет странные результаты.

Моя проблема была в том, где я использовал NavController на всем своем приложении, но мне нужен модальный вид для одного или двух аспектов этого. Достаточно просто. Однако мне понадобился заголовок типа NavBar или ToolBar с кнопкой «Готово», чтобы вытащить VC из стека. Опять же, не проблема. Но мне нужно, чтобы NavBar или ToolBar выглядели так же, как и везде в моем приложении.

Я поселился на ToolBar, увидев, что VC был представлен модально. Итак, там мой ToolBar сидел, в типичном Apple-синем. Приятно, но не так, как выглядела остальная часть моего приложения, где черное изображение использовалось для каждого NavBar. Используя прокси-сервер внешнего вида iOS 5, я изменил фоновое изображение ToolBar. И это сработало. Но, если бы у меня не было UIImage точно в пропорциях и размерах, ожидаемых панелью инструментов, я был в маринованном. Образ просто не выглядел правильным. Итак, я решил создать UIIMageView, где я мог бы управлять режимом содержимого, а затем вставлять subview в toolBar.

Посмотрите на мой код ниже.

UIImageView *toolbarImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:NAV_BAR_BACKGROUND]]; 
    [toolbarImageView setFrame:[self.IBOToolBar bounds]]; 
[toolbarImageView setContentMode:UIViewContentModeScaleAspectFill]; 
[self.IBOToolBar insertSubview:toolbarImageView atIndex:1]; 

Это немного пух, но я надеюсь, что это поможет кому-то изменить изображение на панели инструментов.

NAV_BAR_BACKGROUND может быть определена следующим образом:

#define NAV_BAR_BACKGROUND @"navBarBlackMattDarkSquare.png"