#iphone #objective-c #xcode #xcode4 #uitabbarcontroller
#iPhone #objective-c #xcode #xcode4 #uitabbarcontroller
Вопрос:
Я работаю над приложением и хочу настроить изображение значка UITabBar.
У меня есть изображение с именем about.png это изображение я хочу установить в качестве левого изображения значка UITabBar моего приложения. как я могу это сделать?
Ответ №1:
если вы используете этот код и используете свои собственные изображения, а не встроенные, вы используете свои изображения…
- (id)init {
UIImage* anImage = [UIImage imageNamed:@"newspaper.png"];
UITabBarItem* theItem = [[UITabBarItem alloc] initWithTitle:@"News" image:anImage tag:0];
self.tabBarItem = theItem;
[theItem release];
return self; }
newspaper.png — это мое собственное изображение на панели вкладок…
отлично, теперь этого будет достаточно для решения вашей проблемы…
Комментарии:
1. могу ли я использовать этот код в файле реализации делегирования. генерируется ошибка о TabBarItem
Ответ №2:
Внедрите init() в ViewController, в котором вы используете tab.
- (id)init {
if (self = [super initWithNibName:@"Search" bundle:nil]) {
UIImage* tabImage = [UIImage imageNamed:@"search.png"];
UITabBarItem* theItem = [[UITabBarItem alloc] initWithTitle:@"Search" image:tabImage tag:0];
self.tabBarItem = theItem;
[theItem release];
}
return self;
}
Ответ №3:
Если вы хотите изменить изображение для UITabBarItem, вы можете использовать его метод экземпляра
- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag
Ответ №4:
Всегда есть два способа сделать это программно или визуально (с использованием IB)
Программно:-
UITabBarItem* theItem = [[UITabBarItem alloc] initWithTitle:@"News" image:anImage tag:0];
используйте это или, если вы делаете визуально:-
Нажмите на значок конкретной вкладки в IB и выберите настроить и значок и укажите имя конкретного файла значка.
Возможно, это решит вашу проблему…
Комментарии:
1. я не говорю, что вы использовали встроенные изображения Xcode, просто посмотрите на мой новый ответ, опубликованный в ur list…
Ответ №5:
Вы можете изменить это следующим образом. в методе делегирования контроллера панели вкладок
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
с помощью этого вы можете изменить свое изображение tabbaritem.
Или вы можете использовать непосредственно в своих контроллерах просмотра метод init (или viewWillAppear), например
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
Ответ №6:
Сначала вы создаете класс этого кода :
extension UITabBarController {
func addIcon(icon : UIImage, deselectIcon : UIImage, buttonIndex : Int, currentPage : Int){
var index = 0
for view in view.subviews {
if view.subviews.count > 3 {
for _view in view.subviews {
if index == buttonIndex {
for v in _view.subviews {
if v is UIImageView {
v.removeFromSuperview()
}
}
let img = UIImageView(frame: CGRect(x: _view.frame.width / 2 - 15, y: 4, width: 30, height: 30))
if buttonIndex == currentPage {
img.image = icon
}else{
img.image = deselectIcon
}
img.contentMode = .scaleAspectFit
_view.addSubview(img)
}
index = 1
}
}
}
}
}
В didload
вы вызываете функцию :
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() 0.1 ) {
self.tabBarController?.addIcon(icon: #imageLiteral(resourceName: "Shop"), deselectIcon: #imageLiteral(resourceName: "Shop"), buttonIndex: 1, currentPage: 1)
}
}
override func viewWillAppear(_ animated: Bool) {
tabBarController?.addIcon(icon: #imageLiteral(resourceName: "Shop"), deselectIcon: #imageLiteral(resourceName: "Shop"), buttonIndex: 1, currentPage: 1)
}