Мое приложение имеет несколько кнопок, каждый из которых вызывает другой UIPopoverController. У нас есть «passthroughViews», поэтому кнопки все еще включены, пока popovers вверх. Нажатие одной из кнопок во время отображения popover отклоняет текущий popover и вызывает новый. Проблема в том, что на iOS8 это кажется очень медленным. Поппоры приходят и уходят сами по себе - это просто, когда мы переходим от одного к другому, что есть пауза между тем, когда первый закрывается, а следующий начинает показывать. Я называю эти функции увольнениемПодвоенный и presentPopoverFromRect: обращается к спине, так что между ними ничего не происходит. Я попытался установить «анимированный» на NO для обоих из них, но пауза все еще остается. Любая помощь приветствуется.Переход от одного UIPopoverController к другому медленный на iOS8
ответ
Вместо того, чтобы закрывать popover, повторно назначьте тот же самый popover, когда нажата вторая кнопка. Переместите местоположение всплывающего окна на экране и загрузите в него новый контент. Похоже, это было бы быстрее и избежать любых проблем, связанных с конфликтом или латентностью, с которыми вы переходите от одного модального вида к другому (я подозреваю, что это проблема). Вы потеряете анимацию исчезновения/повторного появления, но она должна быть почти мгновенной и обеспечить хороший пользовательский интерфейс, потому что пользователям не нужно (в конечном счете) ждать анимации, чтобы увидеть их содержимое, когда они нажимают новую кнопку так или иначе.
Что находится внутри этих popovers? Если они привязаны к чему-то, работающему по основному потоку, то вы, вероятно, видите это как ваш элемент задержки. Возможно, вы захотите склонить свои методы viewDidLoad и viewWillAppear. Попробуйте запустить довольно крупные процессы в фоновом потоке и обновить его после появления.
Если вы используете хранилище основных данных, вы, вероятно, используете основной контекст, который всегда работает в основном потоке. Попробуйте кэшировать эти вызовы заблаговременно или запустите ваши выборки на дочернем потоке и верните их в основной поток после загрузки popover.
У нас есть много popovers, которые все показывают эту медлительность. И поскольку проблемы с производительностью не существует на iOS 7, я должен заключить, что это не связано с кодом моего приложения. – imLanky
Кажется, в iOS 8 Apple добавила UIPopoverPresentationController в микс. Это может иметь проблемы с производительностью с несколькими popovers. Я бы подумал о том, чтобы перепроектировать приложение, чтобы удалить дополнительные popovers. Это не совсем правильный дизайн пользовательского интерфейса. – Derek
Попробуйте этот код,
[UIView transitionWithView:pop1.contentViewController.view duration:0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
[pop1 dismissPopoverAnimated:NO];
} completion:^(BOOL finished) {
[pop2 presentPopoverFromRect:btn.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:NO];
}];
надеюсь, что это помогает.
У меня была аналогичная проблема, из-за которой голова ударила по этой проблеме почти целый день: UIPopoverController был очень медленным, чтобы появляться иногда (иногда это было вяло, другое время почти прекрасное, другое - как 4 " появляются ...), и это произошло только на iOs8 (iOs7 всегда мигает-быстро), что приводит меня к мысли, что мое решение может помочь вам.
После долгих отладки я пришел к выводу, что проблема для меня была связана с тем, что я показал popover в пределах
- (NSIndexPath *) tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;
(но я бы не исключал, что существуют другие подобные случаи).
Мое решение работает метод presentPopoverFromRect:
(мои журналы показали, что это был медленный метод) только после того, как метод willSelectRowAtIndexPath:
закончился (как по сути дела, я переполнена весь поповер «Initialize и шоу» в функции для задержки а также, чтобы быть в безопасности, и потому, что мой код уже был таким).
Это сводится к управлению инициализации UIPopoverController и код отображения в блоке, как это:
dispatch_async(dispatch_get_main_queue(), ^() {
// Do the popover stuff here
});
Даже если вы не используете таблицы, другие подобные проблемы могут существовать в iOs8 (потому что это является ошибка Apple!), так что я предполагаю, что это может стоит попробовать ...
Надеется, что это помогает, Приветствия
- 1. Переход от одного фрагмента к другому
- 2. переход от одного лайтбокса к другому?
- 3. WordPress - переход от одного узла к другому
- 4. Переход от одного изображения к другому
- 5. Гладкий переход от одного графика к другому
- 6. Программный переход от одного ViewController к другому
- 7. Переход от одного ListFragment к другому
- 8. Переход от одного файла swf к другому
- 9. iphone - переход от одного вида к другому
- 10. Переход от UIViewController к другому
- 11. Переход от приложения к другому
- 12. Переход от одного действия к другому приводит к сбою приложения
- 13. переход от одного контроллера вида к другому с помощью кнопки
- 14. учебник django 'polls' - переход от одного опроса к другому
- 15. Cocos2d-iphone оживляющий переход от одного кадра к другому
- 16. Создание изображения переход от одного контроллера вида к другому
- 17. Переход от одного вида/шаблона к другому в Ember.js rc1
- 18. Переход изображение UIButton от одного изображения к другому
- 19. быстры SKSprite Переход от одного к другому GameScene
- 20. Переход от одного устройства к другому в андроиде?
- 21. Переход от одного инструмента управления источником к другому. Консультируйтесь, пожалуйста?
- 22. переход от одного jsp к другому без использования jsp: forward
- 23. jQuery UI Datepicker, переход от одного календаря к другому?
- 24. Переход от одного окна GUI к другому GUI
- 25. Фрагмент Android - переход от одного вида к другому?
- 26. Переход от одного экрана к другому в Caliburn
- 27. Переход от одного dataframe к другому с plyr
- 28. Переход от одного метода к другому с помощью инструкции goto
- 29. Html5 Canvas Плавный переход от одного цвета к другому
- 30. Как определить переход от одного вида деятельности к другому?
вы можете разместить соответствующий код? –