У меня есть элемент управления на основе UIView, размер которого необходимо изменить в зависимости от различных критериев и свойств элемента управления.Я не уверен, является ли способ, которым я делаю это, лучшим способом, но пока это единственный, который я нашел, который, кажется, работает.Поскольку размер элемента управления зависит от различных свойств, я не могу установить размер в конструкторе.
У меня есть метод setupControl: он содержит весь код для завершения настройки на основе набора свойств.Я не хочу, чтобы setupControl: вызывался вручную, поэтому в drawRect я определяю, нужно ли мне вызывать его, и затем ставлю в очередь селектор, как это:
[self performSelector:@selector(setupControl)withObject:self afterDelay:0];
return;
В нижней части setupControl: затем я делаю:
[self setNeedsDisplay];
self.hidden = NO;
Я также переопределил конструкторы initWithFrame: и initWithDecoder: так, чтобы они устанавливали скрытый UIView для запуска до тех пор, пока не будет выполнен код установки.Идея состоит в том, чтобы устранить любые «вспышки» на дисплее при изменении размеров элемента управления.
Как я уже сказал, это работает нормально, элементы управления можно нарисовать в любом размере - это файл xib, а затем установить во время выполнения правильный размер.
Мой вопрос заключается в том, является ли этот метод постановки в очередь селектора, выход из drawRect: а затем с помощью setNeedsDisplay, является единственным способом сделать это?O есть какой-то метод, который я не нашел, который я могу переопределить?или что-то еще?