为整个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) }