所以我想出了一个解决方案。我觉得有点笨拙,但它确实有效。
基本上我所做的是创建我的可拉伸图像,并指定了左右大写。然后我用它初始化一个 UIImageView 。然后我将图像视图的框架调整到所需的宽度。这将适当地调整其中包含的图像的大小。
最后我使用了一段我发现的代码,它通过垂直平铺现在包含在图像视图中的调整后的图像来创建一个新图像。请注意,我如何使用 UIImageView 视图的 image 属性而不是访问原始 UIImage。
最后一件事是将新的 UIImage 设置为视图的图案背景颜色
这是代码:
// create a strechable image
UIImage *image = [[UIImage imageNamed:@"progressBackgroundTop@2x.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 60, 0, 60)];
// create the image view that will contain it
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
CGRect frame = imageView.frame;
frame.size.width = self.view.bounds.size.width;
imageView.frame = frame;
// create the tiled image
CGSize imageViewSize = imageView.bounds.size;
UIGraphicsBeginImageContext(imageViewSize);
CGContextRef imageContext = UIGraphicsGetCurrentContext();
CGContextDrawTiledImage(imageContext, (CGRect){ CGPointZero, imageViewSize }, imageView.image.CGImage);
UIImage *finishedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:finishedImage];