как правильно заставить подпредставление перерисовываться при изменении ориентации устройства?

У меня есть контроллер представления с представлением и одним подпредставлением. Когда ориентация устройства изменяется, представление автоматически перерисовывается, а подпредставление — нет. Если я явно делаю [subview setNeedsDisplay], он перерисовывается, но у меня нет логического места для размещения этого вызова в моем коде. И, поскольку мне не нужно явно сообщать представлению о перерисовке, кажется нелогичным указывать подпредставлению перерисовывать. Есть ли способ сделать автоматическую перерисовку подвида при перерисовке представления?


person RobertL    schedule 31.12.2010    source источник


Ответы (2)


Я обнаружил, что работает следующее. Если это не лучший подход, кто-нибудь, пожалуйста, дайте лучший способ сделать это.

Включите следующее в файл subview.m, в метод initWithFrame:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.contentMode = UIViewContentModeRedraw;

Несмотря на то, что это работает и хорошо вписывается в мой код, я не понимаю, почему для подвида нужны эти свойства, а для представления нет.

person RobertL    schedule 31.12.2010

Синтаксис Swift 3/iOS10:

    self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.contentMode = .redraw
person Sasha Prokhorenko    schedule 24.08.2017