ice*_*806 25 popover ios swift
我无法更改popover演示文稿的大小.这是我到目前为止所拥有的
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
if segue.identifier == "popoverView"
{
let vc = segue.destinationViewController
let controller = vc.popoverPresentationController
if controller != nil
{
controller?.delegate = self
controller?.sourceView = self.view
controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,所有这一切都是以弹出窗口为中心并移除箭头,这很好.但它没有调整容器的大小.任何帮助将不胜感激.谢谢.
当我使用preferredContentSize时,我收到错误"无法分配给属性:'preferredContentSize'是不可变的"
bey*_*ulf 54
在显示的视图控制器上设置首选内容大小而不是 popoverPresentationController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
if segue.identifier == "popoverView"
{
let vc = segue.destinationViewController
vc.preferredContentSize = CGSize(width: 200, height: 300)
let controller = vc.popoverPresentationController
controller?.delegate = self
//you could set the following in your storyboard
controller?.sourceView = self.view
controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
使用自动布局
值得一提的是,您可以使用布局约束而不是将 preferredContentSize 设置为特定值。为此,
将此添加到您的视图控制器:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.preferredContentSize = self.view.systemLayoutSizeFitting(
UIView.layoutFittingCompressedSize
)
}
Run Code Online (Sandbox Code Playgroud)
确保您有从弹出视图到控制器根视图的约束。这些可以是低优先级,空间 >= 0 约束。
| 归档时间: |
|
| 查看次数: |
27326 次 |
| 最近记录: |