Ios 如何为UIView制作基于图像的平铺背景,使其不会';t刻度?

Ios 如何为UIView制作基于图像的平铺背景,使其不会';t刻度?,ios,swift,uiimage,Ios,Swift,Uiimage,在iOS应用程序中,我有250x85pt UIView。我想它有基于图像的平铺背景。原始图像为398x398像素。我希望我的图像平铺 当我运行应用程序时,我的图像会平铺,但由于某些原因,它会按如下方式缩放: 我使用以下代码来实现它: var image = UIImage(contentsOfFile: "myfilepath.png")! var uicolor = UIColor(patternImage: image) uiview.backgroundColor = uicolor

在iOS应用程序中,我有250x85pt UIView。我想它有基于图像的平铺背景。原始图像为398x398像素。我希望我的图像平铺

当我运行应用程序时,我的图像会平铺,但由于某些原因,它会按如下方式缩放:

我使用以下代码来实现它:

var image = UIImage(contentsOfFile: "myfilepath.png")!
var uicolor = UIColor(patternImage: image)
uiview.backgroundColor = uicolor
你能解释一下吗 1.为什么ios会缩放我的图像,以及
2.如何在不缩放的情况下绘制平铺图像?

基本上,图像比您的
ui视图大。当您指定
UIColor(patternImage:image)
时,它使用1x大小的图像。 我们通常在笔记本电脑上看到的图像是按窗口大小按纵横比缩放的


因此,根据您的要求缩放图像,然后将其作为背景图像应用

要扩展Banto的答案,问题是您的视图是250x85点,在视网膜设备上,它实际上是500x170像素。当x1图像转换为图案时,它将应用于点级别。通过将图像上的比例设置为与设备上的比例匹配,可以很容易地改变问题:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 85))

let image = UIImage(named: "myfilepath.png")!
let scaled = UIImage(CGImage: image.CGImage, scale: UIScreen.mainScreen().scale, orientation: image.imageOrientation)

view.backgroundColor = UIColor(patternImage: scaled!)
试试这个

 self.mainView.layer.contents = (id)[UIImage imageNamed:@"CROPNET.png"].CGImage;

请不要将您的
var
命名为“uicolor”…问题是我的图像是用户上传的。有没有办法从代码中进行调整?@AlexSmolov建议使用
UIImageView
并将
ContentMode
设置为“UIViewContentModeScaleAspectFit”@AlexSmolov这个问题及其答案对您会有帮助,我想谢谢,但除此之外,我还需要我的图案来平铺。减小图像的大小,然后将其作为背景图案应用。谢谢你,大卫!我发现如果你加上@3x(如中所示)myfilepath@3x.png)对于图像名称,它在每台设备上都能完美工作。我建议在这一点上使用2x,但是的,这几乎是一样的。