我想拉伸尺寸为170x50的图像并将其显示在尺寸为240x140的图像视图中。 原始图像如下:
我想保留四个角,只拉伸中心部分。我使用以下代码:
UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"];
UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)];
self.originalImgV.image = originalImg;
self.resizedImgV.image = resizeImg;
originalImgV和resizedImgV都设置为“aspect fill”。我在模拟器上运行它,结果是:
我无法理解的是:resizedImgV有2个箭头! 任何人都可以告诉我为什么以及如何正确使用它? 感谢
答案 0 :(得分:13)
您的问题在于传递给UIEdgeInsetsMake
的值。值为top,left,bottom,right。由于左上角的箭头,您需要确保左边的值足够大,从图像的左边缘到箭头的右边。
根据您发布的图片,您需要以下内容:
UIEdgeInsetsMake(12, 32, 4, 4)
BTW - 图像应仅左+右+ 1像素宽,上+下+ 1像素高。所以你的形象不需要像现在这么大。
答案 1 :(得分:0)
拉伸在垂直方向上处理,然后在水平方向上处理(反之亦然)。所以提供top&考虑不应拉伸和垂直方向的垂直方向的底部偏移水平方向的右偏移。
答案 2 :(得分:-1)
使用此功能,您可以使用此功能更改UIImage
的大小。
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
希望这会对您有所帮助。