Swift - сохранить тот же фон при переключении между представлениями [дублировать]

Я думаю, что стоит отметить, что jQuery отлично сортирует это с помощью $.each().

См.: https://api.jquery.com/each/

Например:

$('.foo').each(function() {
    console.log($(this));
});

$(this) является единственным элементом внутри объекта. Примените swap $('.foo') к переменной, если вы не хотите использовать механизм выбора jQuery.

1
задан mrlarssen 12 January 2016 в 11:55
поделиться

1 ответ

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

  1. подклассификации UIWindow и переопределения drawRect для рисования вашего изображения; подробности о подклассе UIWindow здесь
  2. , а затем с помощью UIAppearance для управления цветом фона для остальных видов в вашем приложении (вы должны установить его на clearColor); подробности об этом здесь , хотя я думаю, что вам нужно будет подклассифицировать представления, используемые вашими контроллерами, чтобы справиться с запиской в ​​принятом ответе

A базовая реализация может выглядеть так:

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()
2
ответ дан Community 24 August 2018 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: