如何更改标签栏图标图像?

时间:2011-05-25 10:12:21

标签: iphone objective-c xcode xcode4 uitabbarcontroller

我正在开发一款应用,想要自定义UItabbar图标图片。

我有一张名为about.png这张图片的图片我想设置为我应用的UItabbar的左图标图片。 我怎么能这样做?

6 个答案:

答案 0 :(得分:3)

k你使用这个代码并使用你自己的图像,而不是内置的图像...

- (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是标签栏中我自己的图片......

k现在这对你的问题已经足够了......

答案 1 :(得分:0)

如果要更改UITabbarItem的图像,可以使用其实例方法

- (id)initWithTitle:(NSString  *)title image:(UIImage  *)image tag:(NSInteger)tag

答案 2 :(得分:0)

在使用tab的viewController中实现init()。

- (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 :(得分:0)

通过编程方式或通过视觉方式(使用IB)

总有两种方法

编程: -

UITabBarItem* theItem = [[UITabBarItem alloc] initWithTitle:@"News" image:anImage tag:0];

使用此或如果您在视觉上: - 单击IB中的特定选项卡图标,然后选择自定义和图标,并提供特定图标文件的名称。

这可以解决你的问题......

答案 4 :(得分:0)

你可以改变它。 在tabbar控制器委托方法

- (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"]];

答案 5 :(得分:0)

首先,使该代码成为类:

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中,您调用function:

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)

}