2016-01-12 1 views
1

Я хочу, чтобы иметь возможность добавлять фоновое изображение в мое приложение ios, которое применяется ко всем представлениям и не нужно добавлять это изображение в каждый вид. Можно ли добавить изображение в UIWindow или что-то еще?Как я могу добавить одно и то же фоновое изображение ко всем представлениям в моем приложении ios с помощью swift?

Теперь, когда я делаю переход, фон нового представления также «переходы» по моему предыдущему виду, хотя его же фон. Я хочу иметь возможность переходить только к контенту контента, а не к фону, который является тем же самым.

+1

Вы должны быть в состоянии достигнуть этого подклассов UIWindow и переопределение 'drawRect' обратить ваше изображение. А затем установите UIColor.clearColor в качестве фона для всех видов. – Cristik

ответ

2

Вы должны быть в состоянии достичь этого:

  1. подклассов UIWindow и наиважнейшей drawRect обратить ваше изображение; подробнее о подклассе UIWindowhere
  2. , а затем с помощью 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() 
Смежные вопросы