将背景图像添加到View Controller中

时间:2013-09-10 13:22:51

标签: ios objective-c cocoa-touch uiviewcontroller

我尝试在我的app委托下使用此代码,以便将PNG图像添加为视图控制器的背景:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

    return YES;
}

但我没有运气...视图控制器仍然有白色背景。这段代码出了什么问题?

9 个答案:

答案 0 :(得分:35)

接受的答案和迈克尔的回答是有效的,但是,正确的方法是使用UIImageView。它可以根据设备上不同的屏幕尺寸更好地控制调整大小,缩放等。这是一个例子;

首先创建一个UIImage。

UIImage *backgroundImage = [UIImage imageNamed:@"iphone_skyline3.jpg"];

第二次创建一个UIImageView。将帧大小设置为父(自)帧大小。这很重要,因为帧大小会因不同设备而异。将根据图像大小进行拉伸。接下来将图像分配给视图。

UIImageView *backgroundImageView=[[UIImageView alloc]initWithFrame:self.view.frame];
backgroundImageView.image=backgroundImage;

最后,要将图像保留在所有控件后面,请执行以下操作。如果您将图像设置为应用程序的背景,这一点非常重要。

[self.view insertSubview:backgroundImageView atIndex:0];

答案 1 :(得分:24)

您需要为ViewController的视图设置背景

在ViewController中initviewDidLoad

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

答案 2 :(得分:7)

以下是swift中的内容:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}

答案 3 :(得分:5)

@hadaytullah答案的Swift 4版本在图像调整方面有一些改进:

override func viewDidLoad() {
    super.viewDidLoad()

    let backgroundImage = UIImage.init(named: "yourImageNameHere")
    let backgroundImageView = UIImageView.init(frame: self.view.frame)

    backgroundImageView.image = backgroundImage
    backgroundImageView.contentMode = .scaleAspectFill
    backgroundImageView.alpha = 0.1

    self.view.insertSubview(backgroundImageView, at: 0)
}

答案 4 :(得分:1)

在viewDidLoad中,我使用:

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

或者,如果你想在appDelegate中这样做,我认为可以

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];

然后在viewDidLoad中将背景设置为[UIColor clearColor]?

答案 5 :(得分:1)

如果你的视图控制器有tableView / collection视图,下面的代码将适合你。

 - (void)viewDidLoad
{
   [super viewDidLoad];

   self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}

答案 6 :(得分:1)

你可以考虑我在swift 3.0中使用的以下解决方案并在xcode 8中进行测试

    // init and image with your pattern image
    var bgUIImage : UIImage = UIImage(named: "yourIamgeName")!
    let myInsets : UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
    bgUIImage = bgUIImage.resizableImage(withCapInsets: myInsets)
    self.view.backgroundColor = UIColor.init(patternImage:bgUIImage)

结果将是以下图片

enter image description here

答案 7 :(得分:0)

您可以从故事板中完成。

添加UIImageView,只需在Attribute Inspector中为Image属性设置背景图像。

答案 8 :(得分:0)

您还可以将扩展名写入UIViewController以便在多个地方使用

extension UIViewController {
    func setBackgroundImage(imageName: String) {
        let backgroundImage = UIImage(named: imageName)
        let backgroundImageView = UIImageView(frame: self.view.frame)
        backgroundImageView.image = backgroundImage
        self.view.insertSubview(backgroundImageView, at: 0)
    }
}