固定UITabBar的image大小

最近有需求需要在UITabBar上设置网络图片,发现UITabBar的image的size是根据网络返回图片的大小来设置的,在不同分辨率的手机上就会出现图片过大或过小的情况.
通过遍历UITabBar的子视图找到如下解决方案

- (void)modifyTabbarImageViewSize{
    for (UIView *subview in self.tabBar.subviews) {
        if (![subview isKindOfClass: NSClassFromString(@"UITabBarButton")]) continue;
        for (UIView *subsubview in subview.subviews) {
            if (![subsubview isKindOfClass: NSClassFromString(@"UITabBarSwappableImageView")]) continue;
            CGFloat width = 20;
            subsubview.bounds = CGRectMake(0, 0, width, width);
        }
    }
}

通过遍历找到tabBar上的imageView,在设置imageView的时候,也就是继承了UITabBarController的控制器的viewWillLayoutSubviews方法里调用上述方法就可以设置imageView的大小了.
但是,当点击tabBar的时候发现图片又变回原本的大小了.
通过查看tabBar的文档,发现了- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 方法,该方法在点击tabBar的时候会被触发,在此方法里再调用一次modifyTabbarImageViewSize ,问题解决!

你可能感兴趣的:(固定UITabBar的image大小)