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