Rewrite UITabBar and UITabBarItem iPhone
Categories: iPhone, OOP on Oct.08, 2009
Вариант 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” и подобное.
Similar posts:


June 8th, 2010 on 10:11 am
Пожалуйста продемонстрируйте исскуство прописывания пропертей. Пробовал отнаследоваться от UITabBarItem, создать проперти _image, _selectedImage и _unselectedImage. Ошибка. Пытаемся использовать приватную переменную. Пробовал сделать категорию и в ней написать сеттер-геттер. Ошибка линковки, о которой Вы упомянули.
Заранее благодарен.
June 8th, 2010 on 12:17 pm
Мою прилагу на второй раз не заапрувили, приват советую не использовать.
June 13th, 2010 on 7:12 am
dear author:
I have use your siample,but my app was reject by apple.
apple:
The following non-public APIs are included in your application:
_updateView
setUnselectedImage:
If you have defined methods in your source code with the same names as the above mentioned APIs, we suggest altering your method names so that they no longer collide with Apple\’s private APIs to avoid your application being flagged with future submissions.
How should I do? Can you help me?Thank you very much!
June 13th, 2010 on 1:48 pm
remove this methods
March 2nd, 2012 on 9:28 am
[...]The information mentioned in the article are some of the best available [...]……
[...]below you’ll find the link to some sites that we think you should visit[...]……