Xcode5 iOS7 - UIPopoverController Corner Radius

Я перехожу к iOS 7 в приложение, которое было довольно гладко, там одна вещь, которую я не могу понять.

У меня есть контроллер представления с кнопками пары, которые я показываю с помощью UIPopoverController.

Мне кажется, что контроллер popover делает что-то, чтобы закрепить содержимое этого контроллера просмотра.

iOS6 (я хочу это):

enter image description here

iOS7 (что-то изменилось):

enter image description here

Я использую пользовательский класс фона контроллера popover, описанный здесь http://blog.teamtreehouse.com/customizing-the-design-of-uipopovercontroller

Здесь моя конкретная версия этого фонового класса http://pastebin.com/fuNjBqwU

Кто-нибудь знает, что изменить, чтобы вернуть его на мой iOS 6?

Ответы

Ответ 1

Я попытался получить решение @OneSman7 для работы, но представление с cornerRadius не было прямым просмотром экземпляра contentViewController.view. Вместо этого мне пришлось подойти к иерархии представлений, ища ту, у которой cornerRadius не равен 0 и reset (это просто экземпляр UIView, не имеет специального имени класса для проверки). Менее идеальное решение, но, похоже, работает до сих пор.

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
        UIView *view = self.view;
        while (view != nil) {
            view = view.superview;
            if (view.layer.cornerRadius > 0) {
                view.layer.cornerRadius = 2.0;
                view = nil;
            }
        }
    }
}

Ответ 2

В контроллере контента popover:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.view.superview.layer.cornerRadius = 0;
}

Ответ 4

Возможно, вы могли бы просто заменить фоновое представление contentViewInsets на:

+ (UIEdgeInsets)contentViewInsets{
    return UIEdgeInsetsZero;
}

А затем просто дайте вашему ContentViewController просмотреть дополнительные надписи на его краях, так что, хотя углы по-прежнему будут округлены, они не будут содержать ни одного вашего содержимого, чтобы эффект округления не был виден.