Sur*_*nde 7 iphone uipopovercontroller ios swift
我想要一个没有圆角但没有箭头的弹出窗口.
我已经完成了以下代码,但它不起作用:
//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)
}
Run Code Online (Sandbox Code Playgroud)
//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)
}
Run Code Online (Sandbox Code Playgroud)
我可以用箭头和圆形箭头显示弹出窗口视图.
请帮我实现:
小智 26
使用上述概念,您还可以在完成参数中设置角半径.
斯威夫特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
})
Run Code Online (Sandbox Code Playgroud)
小智 7
在iOS 11中,不可能使用@SHN解决方案去除圆角.在viewWillAppear之后,角半径设置为默认值.
必须在viewDidAppear方法中设置半径
override func viewDidAppear(_ animated: Bool) {
view.superview?.layer.cornerRadius = 0
super.viewDidAppear(animated)
}
Run Code Online (Sandbox Code Playgroud)
我对shawnynicole 的回答并不是 100% 满意,因为我意识到从圆角到矩形角的变化是显着的/可见的。
所以我想出了这个:子类化视图控制器(在我的例子中它是一个UINavigationController)并覆盖viewDidLayoutSubviews和更新那里的角落。这更好,因为角变化动画不可见,并且每次需要时都会更新(旋转等)。
它适用于 iOS11,并且可能也适用于其他版本。
class PopoverNavigationController: UINavigationController {
@IBInspectable var cornerRadius: Int = -1
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let r = CGFloat(cornerRadius)
if r >= 0 && view.superview?.layer.cornerRadius != r {
view.superview?.layer.cornerRadius = r
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6656 次 |
| 最近记录: |