在我的项目中,我在屏幕的右下角有一个按钮,我在故事板上添加了另一个uiviewcontroller,并控制拖动到我想要的uiviewcontroller作为弹出窗口,然后将viewcontroller大小设置为(300,300)并选中“使用首选的显式大小”。当我加载应用程序并点击按钮时,整个屏幕都会被“popover”覆盖。我还尝试进入popoverViewController的.m文件并设置大小,但这也不起作用。
有什么想法吗
编辑:因为它看起来像我必须有它是全屏,这是好的,但我仍然遇到了一些其他问题,我早些时候。我的弹出屏幕将出现,我使背景黑色和阿尔法为0.5,使它通过,但它会做动画,然后一旦动画完成,屏幕将从0.5不透明到完全黑色,我唯一能看到的是电池图标的事情。
6条答案
按热度按时间huwehgph1#
OP使用Objective-C。这个答案在swift中给出了代码。将Swift转换为Objective-C应该很容易。
在新添加的ViewController中,在“模拟度量”下,将“大小”更改为“自由形式”,将“状态栏”更改为“无”。
在“模拟大小”下,将视图的高度和宽度更改为您希望弹出框内容的实际大小。
创建到新添加的VC的segue。使用segue类型作为“Present As Popover”,并为segue给予,例如“popoverSegue”。
在要触发此segue的ViewConroller中,添加
UIPopoverPresentationControllerDelegate
协议。重写prepareForSegue函数以捕获弹出框segue。将modalPresentationStyle设置为.Popover以显式声明您想要一个弹出框,然后将视图的popoverPresentationController的delegate属性分配给self:
实现adaptivePresentationStyleForPresentationController函数,以告诉您的应用您确实需要该弹出窗口演示文稿,并且不接受任何替换:
在这些之后,我可以在iPhone上得到一个弹出窗口,它不是全屏,而是为ViewController设置的大小。
来源:iPad Style Popovers on the iPhone with Swift
rjee0c152#
多亏了Bharat for the great answer,我个人使用了一个UISoryboardSegue,它做了几乎相同的事情。这样,我就可以改变故事板中segue的类,得到我想要的,而不会污染我的控制器:
acruukt93#
Swift 3-5版本
bqucvtff4#
Swift 4版本
别忘了加上
n1bvdmb65#
在iPhone上,你可以创建一个自定义的视图控制器来管理所有的弹出窗口。因为每个视图控制器都有自己的导航控制器,所以可以将一个新的视图控制器作为du视图添加到app.window.rootviewcontroller中,并将所有的视图控制器放在前面。
如果你不想自己写,你可以使用这样的东西:http://cocoapods.org/pods/FPPopover
imzjd6km6#
这是Swift 5代码,上面提到的一些/大部分解决方案都是有效的。这是一个提出整体解决方案的努力。这个例子假设你正在使用一个xib作为popover视图控制器,但是这也可以在其他情况下工作,比如说,在prepare for segue中。下面是一个完整的代码:
呈现ViewController:
这一点很重要: