2014-10-02 2 views
4

При настройке backgroundColor на номер [UIColor blackColor] на номер UIPopoverController все в порядке и отображается правильно на iOS7 и iOS8.UIPopoverController backgroundColor возвращается к умолчанию после вращения на iOS 8

я представить его через

[aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem 
        permittedArrowDirections:UIPopoverArrowDirectionAny 
            animated:YES]; 

После поворота на устройство, то поповер backgroundColor сбрасывается по умолчанию цвет (белый в данном случае).

Это не случилось в прошивке 7. Только прошивка 8

Я уже пробовал с

- (void)presentPopoverFromRect:(CGRect)rect 
         inView:(UIView *)view 
     permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections 
         animated:(BOOL)animated; 

и репозицией с помощью UIPopoverControllerDelegate и та же проблема возникает.

Последняя информация: У меня была эта проблема только при отображении поповер на UINavigationBar, но не представляя его на регулярной UIView или любой UIButton.

Спасибо за вашу помощь

+0

У меня такое же поведение. Неужели вам удастся найти решение? – atreat

ответ

7

Я тоже была такая проблема с пирог на iOS8. Помимо вращения цвет фона был сброшен, когда popover изменил его размер (например, когда клавиатура появляется, чтобы редактировать текстовое поле в popover). Главное наблюдение заключается в том, что проблема обычно возникает с popovers, у которой есть стрелка на самом краю содержимого (и это имеет место, когда вы представляете popover от UIBarButtonItem контроллера полного экрана). Следовательно, моим обходным путем было изменение sourceRect, достаточное для того, чтобы стрелка popover отошла от угла. Например, в моем конкретном случае у меня был элемент панели с настраиваемым представлением 33x33 (который использовался как sourceView), и проблема была исправлена ​​путем установки sourceRect в {20, 30, 0, 0} вместо границ пользовательского представления (хотя, я полагаю, точное требуемое смещение может зависеть от размер).

+1

Я обнаружил, что если вид расположен так, что стрелка прикреплена к пузырьку влево или вправо - я пытаюсь описать это, чтобы избежать публикации ссылки на изображение, которая, вероятно, истекла, - тогда эта проблема встречается. Например. стрелка находится прямо у края и нет закругленного угла. Смещение этого всего на один пиксель от края исправил его для меня: 'sourceRect = CGRectOffset (buttonRect, -1, 0);' –

+0

Исправлено - это для меня, спасибо за ваш ответ! – iGranDav

0

Для iOS 8.2 (xcode 6.2): У меня проблема при открытой клавиатуре, popovercontroller становится белым. и после исчезновения клавиатуры он также такой же, как на белом фоне.

Я использую следующий код для решения моей проблемы.

[objPopovercontroller presentPopoverFromRect:CGRectOffset(CGRectMake(SCREEN_WIDTH-40, 60, 0, 0), -1, 0) 
             inView:self.view 
        permittedArrowDirections:UIPopoverArrowDirectionUp 
            animated:YES]; 

// SCREEN_WIDTH = (IS_IPAD?1024:[UIScreen mainScreen].bounds.size.width) 
0

У меня также была эта проблема в iOS 9.1. Смещение исходного прямоугольника было хорошим наблюдением и обходным решением, но для меня это, казалось, не имело эффекта, пока смещение не достигло 16 или около того, что означало, что стрелка выглядела несколько неправильно.

Чтобы избежать этого, в конце я использовал GIKPopoverBackgroundView, чтобы обеспечить пользовательский вид фона (UIPopoverBackgroundView). Я извлек соответствующие фоновые изображения popup из UIKit (см. [1] ниже), чтобы получить ту же форму popover, что и iOS 9, и изменил их цвет в соответствии с моими потребностями.

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

[1] Используйте cartool, чтобы получить _UIPopoverViewBlurMaskBackground * от /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/Artwork.bundle/Assets.car

+0

Отличное обновление оригинального ответа спасибо! – iGranDav