更改 UIImageView 或 UIImage 宽度
Posted
技术标签:
【中文标题】更改 UIImageView 或 UIImage 宽度【英文标题】:Change UIImageView or UIImage width 【发布时间】:2014-05-14 02:39:14 【问题描述】:我有 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 的大小来取得一些进展,但位置是相同的。导致图像(现在宽度更小)显示为“移动”到右侧,我希望该图像保持原来的左对齐,但宽度更小。
在故事板中,它位于原型单元格内,这就是我通过标签获得 UIImageView 的原因。还尝试了几乎所有模式(故事板上属性选项卡中的视图->模式),目前有“缩放填充”,目前无法正常工作。
我应该在 UIImageView 中调整 UIImage 的大小吗?我应该调整整个 UIImageView 的大小吗?希望有人可以帮助我在这方面的良好做法,谢谢! :D
PS:会发布一些截图,但声望不够:(
【问题讨论】:
【参考方案1】:如果您只是使用纯色,那么只需使用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
的帧的好方法。还有其他更短的方法,但这样可以更容易阅读代码。
【讨论】:
以上是关于更改 UIImageView 或 UIImage 宽度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中检测 UIImageView 上的 UIImageView 更改或 KVO 炒锅
如何更改UIImage / UIImageView的单个像素的颜色