Настройка вида фона UIPopoverController и цвета границы
Можно ли изменить цвет рамки, стиль / цвет панели навигации и стиль / цвет стрелки для всплывающего окна? Если так, то как? Если какой-то пример кода доступен, то это будет здорово!
8 ответов
К несчастью, UIPopoverController
не настраивается так. Вы не можете изменить цвет границы, стиль / цвет панели навигации или стиль / цвет стрелки: Как настроить / стилировать UIPopoverController.
iOS 7 и выше, вы можете изменить backgroundColor
из UIPopoverController
который влияет на цвет фона навигации, а также стрелки поповера.
@property (nonatomic, copy) UIColor *backgroundColor NS_AVAILABLE_IOS(7_0);
Пример использования:
if ([self.popoverVC respondsToSelector:@selector(setBackgroundColor:)]) { // Check to avoid app crash prior to iOS 7
self.popoverVC.backgroundColor = [UIColor greenColor];
}
Примечание. На данный момент (iOS 7.0.3) в некоторых случаях (например, установка цвета с помощью colorWithPatternImage:) симулятор не учитывает цвет, но на устройстве он работает нормально.
Проверьте эту классную ссылку.....
Для iOS5,
http://thinkvitamin.com/code/ios/customizing-the-design-of-uipopovercontroller/
С уважением, Арун.
Начиная с ios 5, вы можете многое сделать, просто попробуйте эту библиотеку https://github.com/ddebin/DDPopoverBackgroundView вы можете настроить цвет оттенка границы, ширину бодрера, а также стрелку
посмотрите документацию
Панель навигации и панель инструментов внутри всплывающего окна - это просто стандартные UINavigationBar и UIToolBar, мне удалось изменить их внешний вид так же, как и с помощью обычной панели навигации или панели инструментов. Граница, однако, не легко настраивается.
Здесь я разработал хорошее решение для этой проблемы:
изменить цвет контроллера навигации в поповере
удачи!
Вы можете использовать ElegantPopover cocoapod, чтобы выполнить некоторые из этих задач.
Я пытаюсь обмануть его, настраивая viewcontroller внутри popover, а затем скрывая границу popover, используя этот код
UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0];
border.hidden = YES;
Приложение на самом деле все еще находится в разработке, поэтому я надеюсь, что другие люди прокомментируют это решение.