如何剪切更大的图像,以适应以编程方式构build的tabBarController中的tabBar图标。

我以编程方式创build了一个选项卡控制器。

现在,我想添加图像到不同的标签,我用它:

self.tabBarItem.image = [UIImage imageNamed:@"Sample_Image.png"]; 

问题是Sample_image的大小比tab要求的大。

所以只是想知道如何裁剪图像以适应选项卡。

 Sample_image is larger in size than is required by tab. 

尝试这段代码,因为这将调整所需的图像大小,并返回一个30x30大小( UITabbar所需的UITabbar )的UIImage实例。

 UIImage *image = [UIImage imageNamed:@"Sample_Image.png"]; self.tabBarItem.image = [self imageWithImage:image scaledToSize:CGSizeMake(30, 30)]; 

添加此方法

 - (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 

将图像重命名为Sample_Image@2x.png 。 这被称为视网膜显示器的像素倍增。

没有@ 2x的iOS不知道它应该应用一个缩放因子,它会被照原样使用,尽pipe它应该减半。

  [[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"Sample_Image@2x.png"]]; 

实际上应该是:

Sample_Image png(45像素左右)

Sample_Image@2x.png所以你只说:

 [[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"Sample_Image.png"]];