我有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:会发布一些屏幕截图,但声誉不够:(答案 0 :(得分:0)
如果您只是使用纯色,那么只需使用UIView
并设置backgroundColor
属性即可。为此目的使用图像不必要地使事情复杂化,此外,UIImageView
是UIView
的子类,因此唯一添加的功能将与您不需要的内容相关。
现在我们已经决定使用UIViews
代替图片了,您不必再担心UIViewContentMode
(或者填充无意义的缩放比例)。只需相应地更改视图的size
和origin
属性即可。
为此目的使用视图而不是图像的示例:(我不能保证语法,因为我不是从我的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
帧的好方法。还有其他更短的方法,但这样可以更容易阅读代码。