2016-07-26 3 views
3

Я хочу, чтобы popover без закругленных углов и без стрелы.popoverpresentviewcontroller с прямоугольным углом и без стрелки

Я сделал следующий код, но он не работает:

//SerachPopViewController.swift

//MARK: InitCoder 
required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    //popover settings 
    //popoverPresentationController!.permittedArrowDirections = .Any 
    modalPresentationStyle = .Popover 
    popoverPresentationController!.delegate = self 
    //permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) 
    self.preferredContentSize = CGSize(width:340,height:380) 
} 

//QueryTableViewController.swift

@IBAction func searchFilter(sender: AnyObject) { 

    let searchPopController = storyboard!.instantiateViewControllerWithIdentifier("SerachPopViewController") as! SerachPopViewController 
    searchPopController.serachPopDelegate = self 
    searchPopController.modalPresentationStyle = .Popover 
    searchPopController.preferredContentSize = CGSize(width:340,height:380) 

    let popoverPresentationController = searchPopController.popoverPresentationController 

    popoverPresentationController!.sourceView = self.view; 
    popoverPresentationController!.sourceRect = CGRectMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds),0,0) 
    popoverPresentationController!.permittedArrowDirections = UIPopoverArrowDirection(); 
    self.presentViewController(searchPopController, animated: true, completion: nil) 
} 

Я способен отображать поповер вид со стрелкой и закругленной стрелкой.

Пожалуйста, помогите мне достичь: вид

  • всплывающего окна с прямоугольником углом
  • вида всплывающего окна без стрелок направления

ответ

3

Чтобы получить поповер без стрелки, когда вы инициирование поповера, использование:

popover!.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) 

Для перемещения по городу без углового радиуса, в попкорне вид контроллера используется:

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     // Do any additional setup after loading the view, typically from a nib. 
     self.view.superview?.layer.cornerRadius = 0.0; 
    } 
+0

Спасибо ... Я сделал .... спасибо за вашу помощь ... –

+0

@SurajLokhande Если это работает для вас, пожалуйста, вы можете принять ответ? – SHN

14

Используя приведенную выше концепцию, вы также можете задать радиус угла в параметре завершения.

Свифта 3

let popoverViewController: UIViewController = // Some view controller to be presented in a popover 

// Set popover properties here... 
// i.e. popoverViewController.modalPresentationStyle = .popover 

present(popoverViewController, animated: true, completion: { 
    popoverViewController.view.superview?.layer.cornerRadius = 0 

    // Additional code here 
}) 
+2

Спасибо, ваш должен быть принятым ответом –

+0

Спасибо, лучший. Работает на iOS 10.3.3 – Kryguu

+0

работает также на iOS 11 –

3

В прошивке 11 его не представляется возможным использовать @SHN решения для удаления закругленных углов. Радиус угла равен значению по умолчанию после viewWillAppear.

Радиус должен быть установлен в методе viewDidAppear

override func viewDidAppear(_ animated: Bool) { 
    view.superview?.layer.cornerRadius = 0 
    super.viewDidAppear(animated) 
} 
+0

Ваш ответ верный, но на iOS 11, если мы повернем устройство, радиус угла вернется. Пока не знаю, как это исправить. – Changwei

0

Я не знаю, почему он не does't работу на моем симуляторе с iOS11.1 пока пытаюсь установка backgroundColor.I добавлена ​​функция viewWillTransition для вращения устройства.

override func viewDidAppear(_ animated: Bool) { 
    view.superview?.backgroundColor = UIColor.white 
    view.superview?.layer.cornerRadius = 0 
    super.viewDidAppear(animated) 
} 

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    view.superview?.backgroundColor = UIColor.white 
    view.superview?.layer.cornerRadius = 0 
    super.viewWillTransition(to: size, with: coordinator) 
} 
+1

Привет, добро пожаловать в SO и спасибо за ответ. Чтобы сделать его более полезным для других пользователей, он помогает объяснить, где были проблемы с исходным кодом и как ваше улучшение – Spangen