2014-05-14 116 views
0

我有一个纯色(绿色和橙色)的2个图像(280x20像素),我将橙色放在绿色的背后。我想要的是在绿色的宽度上调整或拉伸(向下)。我不在乎失去质量,图像是由纯色组成的。更改UIImageView或UIImage宽度

为什么?他们将代表数据,如果我有50%-50%的分布,我希望绿色的是140x20。这样,我们可以通过图像的视觉帮助(类似条形图)理解两幅图像具有相同的大小。如果数据是75%-25%,我希望绿色的宽度为(280 * 0.75),这个比例为3:1。请注意,我不会调整橙色图像的大小,她会将它放在绿色的图像后面,用户会看到绿色的图像没有覆盖。

我没有任何关于数据比例的计算问题。 我的问题是处理图像缩放/拉伸/等。我已经试过如下:

//imageView is the imageView representing the "green image bar" 
UIImageView* imageView = (UIImageView*) [cell viewWithTag:202]; 
double scale = 0.75; 
CGRect frame = imageView.frame; 
imageView.frame = CGRectMake(frame.origin.x, frame.origin.y, 280*scale, frame.size.height); 

我曾经有过通过实际调整的UIImageView的一些进展,但位置是一样的。导致图像(现在宽度较小)显示为“向右移动”,我希望该图像保持原来的左对齐方式,因为它最初有,但宽度较小。

在故事板中,它位于原型单元格内,这就是为什么我通过标记获得了UIImageView。还尝试了几乎所有的模式(故事板属性选项卡中的视图 - >模式),目前有“Scale to Fill”,此时不起作用。

我应该调整UIImageView中的UIImage的大小吗?我应该调整整个UIImageView吗?希望有人可以帮助我在这方面的良好做法,谢谢! :d

PS:请问已经发布了一些截图,没有足够的声誉,虽然:(

回答

0

如果你仅仅使用纯色,然后只需使用一个UIView并设置backgroundColor属性使用图像这一点。目的所以,现在我们已经谈妥了不必要地复杂的事情,再说,一个UIImageViewUIView的子类,因此唯一的附加功能是要涉及到的东西你不需要。

使用UIViews代替图像,你不必担心UIViewContentMode了(或者填充无用的比例)。只需相应地更改您的视图的sizeorigin属性即可。

使用次数而不是图像用于此目的的例子:(我不能保证语法,因为我不是从我的Mac编写本)

UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(0,0,280,20)]; 
UIView *orangeView = [[UIView alloc] initWithFrame:CGRectMake(0,0,280,20)]; 

greenView.backgroundColor = [UIColor greenColor]; 
orangeView.backgroundColor = [UIColor orangeColor]; 

CGRect newGreenFrame = greenView.frame; 
newGreenFrame.size.width = newGreenFrame.size.width * 0.75; 

greenView.frame = newGreenFrame; 

这是初始化和改变的好方法UIViews的帧。还有其他更简单的方法,但这样可以使代码更容易阅读。

+0

正是我需要的,谢谢! – Fdo