iOS UIView背景图片

我想在UIView.上有一个UIImage作为背景图像UIView.

这是我的代码:

 UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"login.png"]]; self.view.backgroundColor = background; [background release]; 

问题是,规模不大。 它缩放到640到480,所以我不能100%确定,但它看起来只有300到250是显示或类似的东西。

是否适合缩放/适合UIView /适合大小的模式?

根据UIColor API:

您可以使用图案颜色来设置填充或笔触颜色,就像您使用纯色一样。 在绘制过程中,图案颜色中的图像根据需要平铺以覆盖指定区域。

这意味着它试图从你的形象中创build一个模式来填补这个区域。 我认为这样做的最佳方式是重新调整图像大小以适应UIView大小。

这里有一个很好的答案如何在运行时调整图像的大小:

调整UIImage的最简单的方法是什么?

您需要在添加图像之前处理图像,请尝试以下操作:

 UIGraphicsBeginImageContext(self.view.frame.size); [[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 

你好,试试这个,

  self.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"login.png"]]; 

指定一个实际的背景并将其发送到您的视图的背面

 //add background UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]]; [myView addSubview:background]; [myView sendSubviewToBack:background]; myView.contentMode = UIViewContentModeScaleAspectFit; 

Swift中使用这个…

  UIGraphicsBeginImageContext(self.view.frame.size) UIImage(named: "1.png")?.drawInRect(self.view.bounds) var image: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() self.view.backgroundColor = UIColor(patternImage: image) 

如果你想迅速做到这一点:

 self.view.backgroundColor = UIColor(patternImage: UIImage(named:"background.jpg")) 

我在Swift中使用以下扩展:

 extension UIView{ func setBackgroundImage(img: UIImage){ UIGraphicsBeginImageContext(self.frame.size) img.drawInRect(self.bounds) let patternImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() self.backgroundColor = UIColor(patternImage: patternImage) } } 

在代码中,你可以像这样使用:

 if let image = UIImage(named: "HomeBg"){ self.view.setBackgroundImage(image) } 

在界面生成器中,将Image View添加到View然后select要在“ Attributes inspector使用的图像。 最后,通过拖动Document Outline的元素使Image View成为Image View的第一个子元素。

 UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"image.png"]]; self.view.backgroundColor = background; [background release]; 

如果视图尺寸相同,则可以在AppDelegate.m中放置一个方法,在第一次运行时缩放背景图像,然后将缩放后的图像保存在内存中以供将来使用:

 UIImage *backgroundImage = nil; - (void)setBackground:(UIView *)view { if (backgroundImage == nil) { UIGraphicsBeginImageContext(view.frame.size); [[UIImage imageNamed:@"Background"] drawInRect:view.bounds]; backgroundImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } view.backgroundColor = [UIColor colorWithPatternImage:backgroundImage]; } 

感谢@uneakharsh的帮助!

您可以使用UIGraphicsBeginImageContext方法来设置图像大小相同的视图。

语法: void UIGraphicsBeginImageContext(CGSize size);

  #define IMAGE(imageName) (UIImage *)[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:imageName ofType:IMAGE_TYPE_PNG]] UIGraphicsBeginImageContext(self.view.frame.size); [[UIImage imageNamed:@“MyImage.png"] drawInRect:self.view.bounds]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.view.backgroundColor = [UIColor colorWithPatternImage:IMAGE(@"mainBg")]; 

我也想这样做,我发现,由于自动布局UIImageView拉伸包含UIView ,当我想要的另一种方式:我想UIImageViewUIView的大小。

所以我创build了这个类。 它根据UIView容器更新UIImageView框架,只要通过layoutSubviews布局。

 /** * View with an image whose frame is adjusted to the frame of the view. */ class ViewWithImage: UIView { let image: UIImageView init(image: UIImageView) { self.image = image super.init(frame: .zero) self.addSubview(image) } override func layoutSubviews() { super.layoutSubviews() updateImageFrame() } private func updateImageFrame() { image.frame = CGRect(origin: .zero, size: self.frame.size) } required init?(coder: NSCoder) { fatalError("no init(coder:)") } } 
 this.View.BackgroundColor = UIColor.FromPatternImage (UIImage.FromFile ("body_background.png"));