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
,当我想要的另一种方式:我想UIImageView
取UIView
的大小。
所以我创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"));