0

有什么方法可以在我的 NavigationBar 中以编程方式设置图像的大小,而不是手动更改?

这是创建按钮的代码:

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

我的图像尺寸是 256*256,所以它只是以这个分辨率显示,整个屏幕都乱了。

4

2 回答 2

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:)];
于 2013-11-07T08:59:48.110 回答
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 的图像。

于 2013-11-07T08:55:45.080 回答