我希望能够将背景图像添加到适用于所有视图的ios应用程序,而不必将此图像添加到每个视图。是否可以向UIWindow添加图像?
现在,当我进行转换时,即使背景相同,新视图的背景也会“转换”在我之前的视图上。我希望能够只进行内容转换,而不是背景,这是相同的。
答案 0 :(得分:3)
你应该能够通过以下方式实现这一目标:
drawRect
以绘制图像;有关子类化UIWindow
here UIAppearance
来控制应用中其余视图的背景颜色(您应该将其设置为clearColor
);有关此here的详细信息,但我认为您需要对控制器使用的视图进行子类化,以便处理接受的答案中的注释基本实现可能如下所示:
class WallpaperWindow: UIWindow {
var wallpaper: UIImage? = UIImage(named: "wallpaper") {
didSet {
// refresh if the image changed
setNeedsDisplay()
}
}
init() {
super.init(frame: UIScreen.mainScreen().bounds)
//clear the background color of all table views, so we can see the background
UITableView.appearance().backgroundColor = UIColor.clearColor()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func drawRect(rect: CGRect) {
// draw the wallper if set, otherwise default behaviour
if let wallpaper = wallpaper {
wallpaper.drawInRect(self.bounds);
} else {
super.drawRect(rect)
}
}
}
在AppDelegate中:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow? = WallpaperWindow()