2015-06-07 2 views
2

Я пытаюсь отобразить небольшой модальный поповер с использованием нового UIPopoverPresentationController, и в то время как более или менее работает, поповер пузырь, что он содержится в настоящее время отрезаны в очень странным образом:UIPopoverPresentationController не отображается правильно

enter image description here

Похоже, что есть недостающая часть снизу, но я не могу понять, почему.

Вот код, я использую, чтобы представить поповер (замечу, что SourceView находится на inputAccessoryView):

UIViewController *popoverVC = [self.storyboard instantiateViewControllerWithIdentifier:@"profilePopover"]; 
popoverVC.preferredContentSize = CGSizeMake(300,120); 
popoverVC.modalPresentationStyle = UIModalPresentationPopover; 
self.profilePopoverController = popoverVC.popoverPresentationController; 
self.profilePopoverController.delegate = self; 
self.profilePopoverController.sourceView = self.chatBar.profilePictureButton; 
self.profilePopoverController.sourceRect = self.chatBar.profilePictureButton.bounds; 
self.profilePopoverController.permittedArrowDirections = UIPopoverArrowDirectionDown; 
popoverVC.modalPresentationStyle = UIModalPresentationPopover; 
[self presentViewController:popoverVC animated:YES completion:nil]; 
+0

К сожалению, я не могу пометить его соответствующим именем класса, поскольку, по-видимому, существует ограничение на 25 символов для имен тегов (?!) – devios1

+0

По-видимому, я не первый, кто столкнулся с этой проблемой: http: // stackoverflow. ком/вопросы/29195302/uialertcontrollers-поповер-в-деформированное – devios1

ответ

0

Я просто запустить в этот вопрос, представляя свой собственный поповер из Segue, и каждый раз, когда я думал, что я его исправил, он снова появился.

Я думаю, что, наконец, я получил его. Это похоже на значения в preferredContentSize контроллера назначения и контроллер sourceRect контроллера popover. Размер контента был тем, который мне пришлось корректировать больше всего.

Если значения размера не являются неотъемлемыми (для этого, например, должно быть не 2,0, а не 2.5), или если они не четные (поэтому это может быть 2,0, но не 1,0), это произойдет. Я включил свою подготовку к методу segue, где я все настраивал. Я хотел, чтобы мой размер popover был реляционным по отношению к общему размеру моего представления, но это должно относиться не только к этому сценарию. Размер моей кнопки (для sourceRect) исправлен, поэтому мои измерения срабатывают, не нуждаясь в подобной настройке, но я предполагаю, что здесь применяются те же ограничения.

if let button = sender as? UIButton where segue.identifier == "FAQSegue" { 
    let fullViewSize = self.view.bounds 

    let controller = segue.destinationViewController 
    let popoverController = controller.popoverPresentationController 
    popoverController?.delegate = self 
    var w = round(fullViewSize.width * 0.85) 
    var h = round(fullViewSize.height * 0.85) 
    w = (w % 2 == 0) ? w : w + 1 
    h = (h % 2 == 0) ? h : h + 1 
    controller.preferredContentSize = CGSize(width: w, height: h) 

    // Set arrow position to middle of button 
    popoverController?.sourceRect = CGRectMake(button.bounds.width/2.0, 5.0, 0.0, 0.0) 
} 

Я не могу точно сказать, что они являются единственными триггерами для этой проблемы, но это в конечном итоге фиксируя его для меня на всех размеров экрана iPhone.

Смежные вопросы