更改UIImageView或UIImage宽度

时间:2014-05-14 02:39:14

标签: ios uiimageview resize uiimage

我有2张图像(280x20像素),纯色(绿色和橙色),我将橙色放在绿色背后。我想要的是在绿色宽度上调整大小或拉伸(向下)。我不关心质量下降,图像是由纯色制成的。

为什么呢?他们将代表数据,如果我有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的大小来取得一些进展,但位置是一样的。导致图像(现在宽度较小)显示为“向右移动”,我希望该图像保持原来的左对齐但宽度较小。 / p>

在故事板中,它位于原型单元格内部,这就是我通过标签获取UIImageView的原因。还尝试了几乎每个模式(故事板上属性选项卡中的视图 - >模式),目前有“缩放到填充”,此时无法正常工作。

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

PS:会发布一些屏幕截图,但声誉不够:(

1 个答案:

答案 0 :(得分: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帧的好方法。还有其他更短的方法,但这样可以更容易阅读代码。