UIImageView 在边框上拉伸/重复图像并保持其质量

Posted

技术标签:

【中文标题】UIImageView 在边框上拉伸/重复图像并保持其质量【英文标题】:UIImageView stretch/repeat image on borders and maintain its quality 【发布时间】:2016-11-20 11:23:44 【问题描述】:

我有一个平方UIImage

我正在尝试使用此UIImage 为任何给定的矩形创建一个UIImageView,我将使用它作为顶部另一个视图的边框。

我不想手动设置layer 的边框,但我想使用这张图片。

所需输出示例:

我尝试使用UIViewUIViewContentModeScaleToFill

UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 300, 150)];
[imageView setImage:[UIImage imageNamed:@"background"]];
[imageView setContentMode:UIViewContentModeScaleToFill];

但是图像正在拉伸并且没有返回所需的输出

示例输出:

【问题讨论】:

为什么要使用图片来创建边框。以编程方式创建边框并为其赋予颜色等。任何你想要的。 我无法通过更改视图的图层来实现完全相同的图像边框和阴影。 在您的UIImage 上使用resizableImageWithCapInsets:resizableImageWithCapInsets:resizingMode:。看看那里的“定义可拉伸图像”部分:developer.apple.com/reference/uikit/… @Larme 这正是我想要的,谢谢!请添加答案,以便我接受。 @iDev 试试下面的方法。 【参考方案1】:

您可以通过编程方式创建带有阴影效果的边框:

[view.layer setCornerRadius:5];
[view.layer setShadowColor:[UIColor lightGrayColor].CGColor];
[view.layer setShadowOpacity:0.4];
[view.layer setShadowRadius:1.0];
[view.layer setShadowOffset:CGSizeMake(1.0, 1.0)];

虽然如果你想使用 Xcode 界面来做,你可以这样做

    将方形图像拖放到资产中 选择图像并点击“显示属性检查器” 在切片部分为切片选择“水平和垂直”

现在随心所欲地使用它,您将获得没有任何失真的拉伸图像

您可以点击底部的“显示切片”查看图像切片视图

您也可以使用编程方式进行操作

resizableImageWithCapInsets:resizingMode:

【讨论】:

谢谢,我认为值得一提的是,它可以使用resizableImageWithCapInsets: 以编程方式完成。

以上是关于UIImageView 在边框上拉伸/重复图像并保持其质量的主要内容,如果未能解决你的问题,请参考以下文章

iOS 一些 UIImageView 被拉伸

设置垂直空间iOS时自动布局图像拉伸[重复]

如何阻止图像在 UIImageView 中拉伸?

UIImageView 填写 UIView

像 FB 封面照片一样在 UIImageView 上调整图像

当我使用圆角时,UIImageView 图像正在拉伸。