我希望在UIImage
UIView.
作为背景图片
这是我的代码:
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"login.png"]];
self.view.backgroundColor = background;
[background release];
问题是,规模不合适。它缩放到640到480,所以我不能100%确定它,但它看起来只显示300到250或类似的东西。
是否适合缩放/适合UIView /适合尺寸模式?
答案 0 :(得分:52)
在添加图片之前,您需要处理图片,请尝试以下操作:
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
答案 1 :(得分:27)
你好试试这个,
self.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"login.png"]];
答案 2 :(得分:11)
指定实际背景并将其发送到视图背面
//add background
UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]];
[myView addSubview:background];
[myView sendSubviewToBack:background];
myView.contentMode = UIViewContentModeScaleAspectFit;
答案 3 :(得分:9)
在 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)
答案 4 :(得分:8)
根据UIColor
API:
您可以使用图案颜色设置填充或描边颜色,就像使用纯色一样。在绘制过程中,图案颜色中的图像会根据需要平铺以覆盖给定区域。
这意味着它会尝试从图像中创建一个图案来填充该区域。我认为最好的方法是重新调整图像尺寸以适应UIView
尺寸。
这里有一个很好的答案如何在运行时调整图像大小:
答案 5 :(得分:7)
如果你想在swift中做到这一点:
self.view.backgroundColor = UIColor(patternImage: UIImage(named:"background.jpg"))
答案 6 :(得分:2)
我在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)
}
答案 7 :(得分:1)
在界面生成器中,将Image View
添加到View
,然后在Attributes inspector
中选择要使用的图像。最后,通过拖动Image View
中的元素,使View
成为Document Outline
的第一个孩子。
答案 8 :(得分:0)
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"image.png"]];
self.view.backgroundColor = background;
[background release];
答案 9 :(得分:0)
如果视图的大小相同,您可以在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的帮助!
答案 10 :(得分:0)
您可以使用 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")];
答案 11 :(得分:0)
我也想这样做,我发现由于自动布局,UIImageView
拉伸包含UIView
,当我想要它的另一种方式:我想要UIImageView
取UIView
的大小。
所以我创建了这个类。只要UIImageView
容器通过UIView
布局,它就会根据layoutSubviews
容器更新。{/ p>
/**
* 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:)") }
}
答案 12 :(得分:-1)
this.View.BackgroundColor = UIColor.FromPatternImage (UIImage.FromFile ("body_background.png"));