Як прокоментував Улі нижче, правильний спосіб зробити це переосмислення layoutSubviews
та розміщення imageViews там.
Якщо з якихось причин ви не можете підкласирувати та переосмислювати layoutSubviews
, спостереження bounds
повинно працювати, навіть якщо ви є брудними. Що ще гірше, ризик спостерігається - Apple не гарантує, що KVO працює на класах UIKit. Прочитайте дискусію з інженером Apple тут: Коли асоційований об’єкт звільняється?
оригінальна відповідь:
Ви можете використовувати ключові значення, спостерігаючи:
[yourView addObserver:self forKeyPath:@"bounds" options:0 context:nil];
та реалізувати:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == yourView && [keyPath isEqualToString:@"bounds"]) {
// do your stuff, or better schedule to run later using performSelector:withObject:afterDuration:
}
}