У меня есть представление. Это часть большого и сложного проекта. Когда рамка моего представления установлена, макеты не отображаются автоматически.
Играя с этим, я попытался применить следующий метод:
-(void) setFrame: (CGRect) frame {
NSLog (@"setting frame");
[super setFrame: frame];
[self setNeedsLayout];
}
В этот момент макет был переделан, когда был установлен кадр, как и ожидалось. И если я прокомментировал строку setNeedsLayout, макет не был выполнен. Кроме того, когда я нажимаю "вступать" в строку, где вызывается супер, отладчик ничего не делает. Насколько я могу судить, супер метод setFrame не переопределяется.
FWIW, я также сделал небольшой тестовый проект, в котором я изменил рамку представления. В этом случае layoutSubviews вызывался, когда я это делал. [setNeedsLayout не был вызван в моем тестовом проекте.] Так что что-то в моем большом проекте меняет поведение. Но я не знаю, что это такое.
Может кто-нибудь объяснить, что может происходить?
РЕДАКТ.: для уточнения, изменение рамки меняет высоту представления. Ширина не изменяется.