以编程方式设置图像的大小
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;
是的,现在我编辑我的答案。改变它,而不是添加它。如果你有重新定义错误,就像我说你有两次声明的变量比率。更改名称或删除重新定义。以上是关于以编程方式设置图像的大小的主要内容,如果未能解决你的问题,请参考以下文章