我在做一个自定义的UIView帆布一些绘图,而不是在视图的底部有一组按钮,允许用户选择的形状,我想有用户做长按手势,然后让一个弹出式菜单中会出现不同形状,他们可以选择。我没有看到这样的事情在Xcode,但我认为有这样的事情在iOS版。我不想警报弹出窗口,显示了当你有低电量和通知。
我已经研究过使用UIPopoverController但我有点困惑了一些我读过关于它的其他堆栈溢出的问题,也对苹果给出的文档。
您作出这样的按钮与的viewController和酥料饼的连接作为赛格瑞后,您将需要准备。这是为了为酥料饼SEGUE准备下面的代码。
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if let identifier = segue.identifier
{
switch identifier
{
case History.SegueIdentifier:
if let tvc = segue.destinationViewController as? TextViewController
{
if let ppc = tvc.popoverPresentationController
{
ppc.delegate = self
}
tvc.text = "\(diagnosticHistory)"
}
default: break
}
}
}
千万记住,如果你有一个iPhone的酥料饼将采取全屏幕,使您可以修复使用此对我们说,需要一些特定的要素的案文。
这将解决酥料饼是你在你的文字具备的要素的尺寸完全相同。
@IBOutlet weak var textView: UITextView!
{
didSet
{
textView.text = text
}
}
var text : String = ""
{
didSet
{
textView?.text = text
}
}
override var preferredContentSize : CGSize
{
get
{
if textView != nil && presentingViewController != nil
{
return textView.sizeThatFits(presentingViewController!.view.bounds.size)
}
else
{
return super.preferredContentSize
}
}
set {super.preferredContentSize = newValue}
}
}
我有那些2在不同的视图控制器,但我想它会奏效。您还需要实现UIPopoverPresentationControllerDelegate
和
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
你的第一个的viewController。
我用Masture的方法上面,它的工作对我来说(谢谢!),但一对夫妇的其他新手像我这样的说明:
(1)确保你把“ShowMenuSegue”(或者不管你选择)作为标识符在故事板的SEGUE,并
(2)我不得不添加
var delegate: MainViewController!
在MenuViewController(与MainViewController是您的源视图控制器),以获得tvc.delegate = self
工作
segue
barButtonItem
对2型MenuViewCobtroller
“存在酥料饼”MenuViewController
覆盖preferredContentSize
为:
override var preferredContentSize : CGSize
{
get
{
return CGSize(width: 88 , height: 176)
}
set
{
super.preferredContentSize = newValue
}
}
以我为例,我回到CGSize
宽度为100和200的尺寸可以设置这些值,以便正确地满足您的浮动菜单内容。 4.在初始/源视图控制器,在设定作为prepare(for segue: sender)
self
委托popoverPresentationController
方法:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowMenuSegue" {
if let tvc = segue.destination as? MenuViewController
{
tvc.delegate = self
if let ppc = tvc.popoverPresentationController
{
ppc.delegate = self
}
}
}
}
源视图控制器必须符合UIPopoverPresentationControllerDelegate
和实现下面的方法:
extension ViewController: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
}
而已。你有浮动菜单。希望这将是有益的。