以编程方式设置图像的大小

时间:2013-11-07 08:44:45

标签: ios uinavigationcontroller uibarbuttonitem

有什么方法可以用编程方式设置导航栏中图像的大小而不是手动更改?

以下是创建按钮的代码:

UIBarButtonItem *Share = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"fb_share.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(Share:)];

我的图片大小为256 * 256,所以它只是以这个分辨率显示,整个屏幕都搞砸了。

2 个答案:

答案 0 :(得分:3)

您只想更改图片的大小?如果是这样,这样的事情应该有效:

// Given a UIImage image and a CGSize newSize:

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

然后使用newImage作为UIBarButtonItem的图像。

答案 1 :(得分:3)

Normaly你应该使用contentMode(在本例中为UIViewContentModeScaleAspectFit)每个UIView子类都有这个属性,通常你可以将它用于UIImageView。但我几乎肯定这不适用于UIBarButtonItem。试试,但你可能碰壁了。

如果我的预测是真的,你必须以编程方式调整图像大小:

UIImage *myImage = [UIImage imageNamed:@"fb_share"];
float maximumHeight = 44;
float ratio = maximumHeight/ myImage.size.height;
CGSize imageNewSize = CGSizeMake(myImage.size.width*ratio, maximumHeight);
UIGraphicsBeginImageContextWithOptions(imageNewSize, NO, 0.0);
[myImage drawInRect:CGRectMake(0, 0, imageNewSize.width, imageNewSize.height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIBarButtonItem *Share = [[UIBarButtonItem alloc] initWithImage:resizedImage style:UIBarButtonItemStyleBordered target:self action:@selector(Share:)];