为整个iPhone / iPad应用程序设置背景图像

我有一个单一的图像,我想作为我的应用程序的背景,无论他们在哪里viewcontroller – 你怎么做到这一点?

以下是如何为图片设置背景:

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

编辑:写下Felixyz所说的(并感谢Manni),在你的代表中做这件事:

 window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

在每个视图中你想要有图像,做到这一点:

 self.view.backgroundColor = [UIColor clearColor]; 

取决于你有什么样的界面。 分页? 基于导航? 但一般的答案是:添加一个UIImageView到你的主视图之前/之下的UIWindow。 然后让你的主视图控制器处理的每个视图都有一个透明背景。 很难给出更具体的build议,不知道你是否使用IB,或者你的视图层次结构是什么样的。

在我的应用程序中,我设置了默认的背景颜色。 也许你可以跟你做背景图像:

1:在AppDelegate中设置UIWindow的背景颜色:

 window.backgroundColor = [UIColor myBackgroundGray]; // own Category 

2:现在,让所有其他观点透明:

 self.view.backgroundColor = [UIColor clearColor]; // = transparent 

在你的AppDelegate中

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

添加这一行:

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

你只需要将你的视图背景设置为[UIColor clearColor];

我不确定性能的影响,但我需要完成类似的事情,并最终使用一个UIImageView工作正常(在C#中,但在obj-c中工作相同):

 //Add the view controller first, to ensure proper order of views later. Window.RootViewController = new UIViewController(); //create backdrop image view var imageView = new UIImageView(Window.Bounds); imageView.Image = UIImage.FromBundle("backdrop.jpg"); //insert into window. Window.InsertSubview(imageView, 0); 

这不处理方向的变化,但在我的情况下,允许我将运动效果添加到背景(如视差)。

您的背景是任何View-inheriting对象的属性。 标签,button,控制器和应用程序窗口,例如,都有背景。 如果你想让它成为整个应用程序的完整版本,那么你必须爬上你的控制器的path来find非常“顶”(底视图)的视图,并将其背景设置为你想要的图像。

我通常使用这个function,以避免在iphone上与导航栏重叠。

 -(void)setImageBackground:(NSString*)imageName{ UINavigationController* navigationController = [self navigationController]; float height = navigationController.toolbar.frame.size.height; CGSize size = self.view.frame.size; size.height = size.height; UIGraphicsBeginImageContext(size); CGRect bounds = self.view.bounds; bounds.origin.y = bounds.origin.y + height; bounds.size.height = bounds.size.height-height; [[UIImage imageNamed:imageName] drawInRect:bounds]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.view.backgroundColor = [UIColor colorWithPatternImage:image]; } 

只需在viewDidLoad调用这个assignbackground

 override func viewDidLoad() { assignbackground() } func assignbackground(){ let background = UIImage(named: "background") var imageview : UIImageView! imageview = UIImageView(frame: view.bounds) imageview.contentMode = UIViewContentMode.ScaleAspectFill imageview.clipsToBounds = true imageview.image = background imageview.center = view.center view.addSubview(imageview) self.view.sendSubviewToBack(imageview) }