Компиляция против 5.1 SDK заставляет новый UIPopoverController «вставлять» презентацию всплывающих окон. - PullRequest
17 голосов
/ 08 марта 2012

Компиляция моего приложения для iPad с использованием SDK 5.1 (выпускная версия) приводит к тому, что UIPopoverController показывает себя с помощью нового слайда из левой презентации.Это полностью нарушает мою презентацию popover, которая основывалась на «черном» стиле заголовка и определенной высоте.Я попытался установить presentsWithGesture на NO, но это только отключает жест свайпинга и не останавливает стиль презентации.

Это то же приложение, без перекомпиляции, но работающее на iOS5.1, использует старый стиль представления popover.Так что я знаю, что iOS 5.1 все еще поддерживает метод обратной совместимости.Как я могу активировать старую презентацию поповера?

К сожалению, это действительно важно для моего приложения.

В противном случае, есть ли способ получить заголовок в "черном" стиле?на новых всплывающих окнах?


Хотя в моем приложении есть UISplitViewController, он не отвечает за отображение всплывающего окна.Вместо этого я использую этот код:

   [self.popoverController presentPopoverFromRect:ipadButtonMenu.frame
                                           inView:self.view
                         permittedArrowDirections:UIPopoverArrowDirectionUp
                                         animated:YES];

Этот вопрос является перекрестным сообщением с форумов разработчиков Apple здесь .Я надеюсь, что у кого-то есть ответ.


Ожидаемая презентация: enter image description here

Презентация после компиляции под iOS 5.1 SDK: enter image description here

Ответы [ 4 ]

5 голосов
/ 08 марта 2012

Это изменение кажется плохо продуманным.Конечно, ребята, мы разбиваем что-нибудь в подробном представлении, которое использует пролистывание.Круто!

Чтобы ответить на ваш вопрос «верните черный», если это просто вопрос верхнего цвета панели навигации, вы можете использовать прокси внешнего вида.Например:

[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];

Внешний прокси-сервер может быть установлен очень точно при необходимости;у него есть модель контейнеров.На нем есть очень хорошее видео WWDC.

Что касается простого возврата к старому поведению с новым компилятором, честно говоря, я бы тоже хотел знать.Новое поведение также разбивает листы действий в главном представлении;ранее, когда основной вид был представлен в поповере, они делали правильные вещи.Теперь это ошибка утверждения.

0 голосов
/ 09 января 2013

с iOS 5.1

Из документов:

В iOS 5.1 класс UISplitViewController принимает стиль скользящей презентации при представлении левого представления (ранее замеченного только в Mail),Этот стиль используется, когда презентация инициируется либо существующим элементом кнопки панели, предоставленным методами делегата, либо жестом смахивания в правом представлении.Для получения такого поведения не требуется никакого дополнительного принятия API, и все существующие API, в том числе экземпляр UIPopoverController, предоставленный делегатом, будут продолжать работать, как и раньше.

небольшая работа над здесь ->

0 голосов
/ 05 июня 2012

Возможен возврат! - с MGSplitViewController. Он дает вам API, похожий на элемент управления iOS, но со старым поповером и гораздо большим контролем.

0 голосов
/ 09 марта 2012

Хорошо, у меня была та же проблема, это может помочь, она удаляет черный фон, который достигает нижней части экрана ....

вызовите это после отображения всплывающего окна ...

- (void)removeInnerShadow {
    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
    for (UIView *windowSubView in window.subviews) {

            if ([NSStringFromClass([windowSubView class]) isEqualToString:@"UIDimmingView"]) {
            for (UIView *dimmingViewSubviews in windowSubView.subviews) {

                for (UIView *popoverSubview in dimmingViewSubviews.subviews) {

                    popoverSubview.layer.shadowOpacity=0;
                    popoverSubview.layer.masksToBounds = NO;

                     if([NSStringFromClass([popoverSubview class]) isEqualToString:@"_UIPopoverSlidingChromeView"])
                     {

                         popoverSubview.layer.shadowOpacity=0;
                         popoverSubview.layer.masksToBounds = NO;

                     }
                }
            }
        }
    }
}
...