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

Posted

技术标签:

【中文标题】以编程方式设置图像的大小【英文标题】:set size of an image programatically 【发布时间】:2013-11-07 08:44:44 【问题描述】:

有什么方法可以在我的 NavigationBar 中,而不是手动更改?

这是创建按钮的代码:

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

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

【问题讨论】:

【参考方案1】:

您只想更改图像的大小?如果是这样,这样的事情应该可以工作:

// 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 的图像。

【讨论】:

你必须首先声明你的 UIImage ,并设置一个 CGSize 新大小。但如果我没记错的话,那应该可以。此外,如果您仍然遇到问题,这可能会有所帮助:***.com/questions/6435118/…【参考方案2】:

通常你应该使用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:)];

【讨论】:

是的,但这只是调整了图像的高度。一旦我尝试调整最大宽度,就会弹出错误:重新定义比率。 噢,我犯了一个错误。将第三行从 float ratio = myImage.size.height/maximumHeight; 更改为 float ratio = maximumHeight/ myImage.size.height; 如果你有重定义错误,你应该寻找这个重定义(你声明了两次相同的变量名)。 但是已经有float ratio = maximumHeight/ myImage.size.height; 是的,现在我编辑我的答案。改变它,而不是添加它。如果你有重新定义错误,就像我说你有两次声明的变量比率。更改名称或删除重新定义。

以上是关于以编程方式设置图像的大小的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改浮动按钮图像大小

以编程方式更改条形按钮背景的图像大小?

您如何以编程方式将图像设置为在每个设备上具有相同的相对大小和位置?

以编程方式检测图像大小 - iPhone

uibutton与图像

在iOS中以编程方式压缩PNG图像