Вариант 1

Вкратце о чем нужно помнить!
Самое главное, если вы используете какие-то переменные из приват фреймверков и для них не прописаны property, обязательно пропишите! Иначе при компиляции на эти переменные будет ругаться компилятор к примеру так:

1
2
3
4
"_OBJC_IVAR_$_UITabBarItem._selectedImage", referenced from:
_OBJC_IVAR_$_UITabBarItem._selectedImage$non_lazy_ptr in UICategory.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Рассказывать тут не очем кроме quartz, но о нем я расскажу в следующем посте подробнее, как появится время. Смотрите исходники, кода немного :), основные файлы ExtendsForTabBar.h и m. Исходники ниже.

Вариант 2

Можно взять за основу UITabBar и создать свой объект а не переписывать методы существующего. Хотя в конечном итоге и в этом случае мы переписываем методы.

Добавив два файла пустого NSObject к примеру с именем MyTabBar. В файле h вместо NSObject напишем UITabBar.
В m файе напишем:

1
2
3
4
5
- (void) drawRect:(CGRect)rect {
     self.frame = CGRectMake(0, 409, 320, 71);
     UIImage *img  = [UIImage imageNamed:@"tabbarbg2.png"];
     [img drawInRect:CGRectMake(0, 0, 320, 71)];
}

Далее в MainWindow.xib сделать все как на скриншотах, сохранить и скомпилировать.



Исходники

Чтоб найти еще что-то подобное достаточно набрать: “Custom Colors UITabBar UITabBarItem”, “How to custom UITabBar” и подобное.