ios - 如何使用 [UIImage resizableImageWithCapInsets :]

标签 ios uiimageview uiimage

我想拉伸(stretch)尺寸为 170x50 的图像并将其显示在尺寸为 240x140 的 ImageView 中。 原始图像如下所示:

enter image description here

我想保留四个角,只拉伸(stretch)中心部分。我使用以下代码:


    UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"];
    UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)];
    self.originalImgV.image = originalImg;
    self.resizedImgV.image = resizeImg;

originalImgV 和 resizedImgV 都设置为“纵横比填充”。我在模拟器上运行它,结果是:

enter image description here

我无法理解的是:resizedImgV 有 2 个箭头! 谁能告诉我为什么以及如何正确使用它? 谢谢

最佳答案

您的问题与您传递给 UIEdgeInsetsMake 的值有关。值是上、左、下、右。由于左上角的箭头,您需要确保左值足够大,以便从图像的左边缘到箭头的右侧。

鉴于您发布的图像,您需要类似的东西:

 UIEdgeInsetsMake(12, 32, 4, 4)

顺便说一句 - 图像应该只有左 + 右 + 1 像素宽和顶部 + 底部 + 1 像素高。所以您的图像不需要像现在一样大。

关于ios - 如何使用 [UIImage resizableImageWithCapInsets :],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605514/

相关文章:

objective-c - Cocoa Touch NSArray 初始化无法正常工作

ios - MPRemoteCommandCenter 不生成远程控制事件 MPMusicPlayerController.applicationMusicPlayer()

ios - 如何增加/减少UIImage的亮度,并且需要保存生成的图像?

iPhone UIImagePickerController didFinishPickingImage : UIImage transfer between view controllers?

ios - 在 UITableView 中访问多维数组值

ios - 新的 NSManagedObject 子类与新的 NSObject 子类?

ios - 通过 Segue 将缓存图像传递到 DetailViewController

ios - 如何在 imageview ios 中获取自定义图像的像素颜色值?

iphone - 如何在 UIImageView 中复制 MKMapView 的屏幕?

ios - NSData contentsOfUrl 返回 nil