Так что я понял это сам и нашел этот ответ, чтобы подтвердить:Предотвращение анимации при динамическом изменении размера поповера
Prevent contentSizeForViewInPopover from animating
В основном я нахожусь в подобной лодке в том, что я хочу, чтобы динамически изменять размеры моего поповера, в зависимости от того, как много данных, которые я должен отображать. Я также получаю это действие анимации, когда представление popover перемещается на свои места. Проблема в том, что я не могу установить размер содержимого popover в вызывающем/родительском объекте, потому что ни размер представления содержимого для текстового представления, ни рамки для текстового представления в моем popover не известны до тех пор, пока не будет вызвано viewDidAppear или viewDidLayoutSubviews, но, конечно, в этот момент уже слишком поздно, popover уже на пути к тому, чтобы быть видимым, таким образом, я получаю эту нежелательную анимацию.
Я динамически устанавливаю размер текстовых представлений в классе контроллера popover view, чтобы соответствовать количеству данных, отображаемых текстовыми представлениями, и это работает только в том месте, где их размер рамки определен/известен/однако вы хочу сказать это, когда он еще не достиг этой точки зрения в жизненном цикле просмотра.
Я должен упомянуть, что у меня есть контроллеры просмотра и просмотр всех сделанных в раскадровке.
Имеет ли это смысл? Надеюсь, я объясню это хорошо. Любая помощь или предложения очень ценится.
EDIT Вот мой метод viewDidLayoutSubviews от контроллера представления. Я загружаю в popover - надеюсь, это дает понять. В первый раз, когда это загружается, если я не делаю этого в viewDidLayoutSubviews или viewDidAppear, то для моих 2 текстовых представлений CGRectZero, текстовые представления не изменяют размер для контента правильно, а размер popover не подходит:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.physicianDataNewValueTextView.text = self.physicianDataNewValue;
CGRect frame = self.physicianDataNewValueTextView.frame;
frame.size.height = self.physicianDataNewValueTextView.contentSize.height;
self.physicianDataNewValueTextView.frame = frame;
self.physicianDataOldValueTextView.text = self.physicianDataOldValue;
frame = self.physicianDataOldValueTextView.frame;
frame.size.height = self.physicianDataOldValueTextView.contentSize.height;
self.physicianDataOldValueTextView.frame = frame;
self.contentSizeForViewInPopover = CGSizeMake(384.0f, self.physicianDataOldValueTextView.frame.size.height + 75.0f);
}
Отличная помощь, спасибо! Код, который я использовал в моем методе делегата: '[self.chooseEquipmentPopoverController setPopoverContentSize: размер анимированный: NO];' –
Рад, что эта публикация помогла. Если бы вы не проголосовали за мой ответ, это было бы здорово, спасибо (если вы уже не сделали). – fogwolf