标签: uipopoverpresentationcontroller

iOS 13-UIPopoverPresentationController sourceview内容在箭头中可见

当我在UIPopoverPresentationController中显示一些视图并将其显示为弹出窗口时

popoverCon?.modalPresentationStyle = UIModalPresentationStyle.popover
Run Code Online (Sandbox Code Playgroud)

内容已向上移动,并且箭头中显示了一部分。

在此处输入图片说明

此外,我在弹窗周围有边界

popoverCon?.view.layer.borderColor = .orange
popoverCon?.view.layer.borderWidth = 1.0;
popoverCon?.view.layer.cornerRadius = 10.0;
popoverCon?.view.layer.masksToBounds = false;
Run Code Online (Sandbox Code Playgroud)

它没有朝着箭头所在的部分显示,但在箭头的尖端显示了少许边界线。

在此处输入图片说明

在iOS 12之前,它一直工作良好,但在iOS 13中,此问题即将出现。

关于如何解决这个问题有什么建议吗?

popover uipopoverpresentationcontroller ios13

9
推荐指数
3
解决办法
1324
查看次数

UIPopoverPresentationController popoverLayoutMargins似乎绝对没有效果

正如标题所示,无论我为popoverLayoutMargins提供什么价值,似乎都没有发生.

我试图显示一个锚定到UIButton的弹出菜单.一切正常,只是我想让popover扩展屏幕的宽度.

我试过玩过preferredContentSizeUIViewController.

问题是我不能让popover一直扩展到屏幕的边缘.

根据文档,我发现:

默认边缘插入是沿每条边10个点

并且以编程方式更改它不会产生任何影响.为了验证这一点,我正在使用Xcode的视图调试器.

窗口:

<UIWindow: 0x7fc96cd02c50; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x60000025d580>; layer = <UIWindowLayer: 0x600000039140>>
Run Code Online (Sandbox Code Playgroud)

UIPopoverView

<_UIPopoverView: 0x7fc96cf227a0; frame = (10 101; 355 57); layer = <CALayer: 0x61000023f760>>
Run Code Online (Sandbox Code Playgroud)

请注意,弹出窗口的宽度恰好比窗口宽度小10 + 10个点

我正在尝试使用以下方法更改边距:

menu.popoverPresentationController?.popoverLayoutMargins = UIEdgeInsets(top: 0, left: -90, bottom: 0, right: -90)
Run Code Online (Sandbox Code Playgroud)

在尝试使用viewController之后,我尝试使用它们.那是因为UIPopoverPresentationController文档说明了这一点

在调用present(_:animated:completion :)之后配置popover表示控制器可能看似违反直觉,但UIKit在您启动演示之前不会创建演示控制器.此外,UIKit必须等到下一个更新周期才能在屏幕上显示新内容.这种延迟使您有时间为弹出框配置演示控制器.

ios swift uipopoverpresentationcontroller

7
推荐指数
0
解决办法
760
查看次数

设置UIPopoverPresentationController的barButtonItem时,弹出箭头偏离中心

UIBarButtonItem我的导航控制器上有一个带有图片的图片:

    infoItem = UIBarButtonItem(image: infoImage,
                               style: .plain, 
                               target: self,
                               action: #selector(infoAction))
    navigationItem.rightBarButtonItem = infoItem
Run Code Online (Sandbox Code Playgroud)

当我点击时:

@objc func infoAction()
{
    let popoverContentController = InfoViewController()

    popoverContentController.preferredContentSize = CGSize(width: 300, height: 300)
    popoverContentController.modalPresentationStyle = .popover
    popoverContentController.popoverPresentationController?.delegate = self

    self.present(popoverContentController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

然后调用UIPopoverPresentationControllerDelegate函数:

func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController)
{
    popoverPresentationController.permittedArrowDirections = .any
    popoverPresentationController.barButtonItem = infoItem  <<=====
}

func adaptivePresentationStyle(for controller: UIPresentationController,
                               traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
    return .none
}
Run Code Online (Sandbox Code Playgroud)

<<=====我在那里设置了barButtonItem。我现在希望弹出箭头指向该项目的中心。但这不是:

箭头从中心向右

查看视图层次结构(下图),我的图像在矩形条按钮中水平居中。它根本不在左侧,这可以解释弹出箭头未对齐的情况。

查看层次结构

有什么想法我在这里缺少什么,或者如何纠正?

uibarbuttonitem uipopovercontroller ios swift uipopoverpresentationcontroller

6
推荐指数
0
解决办法
132
查看次数

如何在Swift中的弹出框及其箭头上添加边框颜色?

我的应用程序中包含以下弹出窗口:

在此处输入图片说明

但我希望它看起来像经过编辑的图像(请注意,即使箭头也带有边框):

在此处输入图片说明

如今有可能吗?我已经在内尝试了以下方法UIViewController

self.view.layer.borderColor = UIColor.white.cgColor
self.view.layer.borderWidth = 2
Run Code Online (Sandbox Code Playgroud)

但这对箭头无效。是否有任何转身?

calayer uiview popover swift uipopoverpresentationcontroller

6
推荐指数
2
解决办法
513
查看次数

如何在iPhone中使用popover控制器

我无法将popover控制器显示为iPhone中的popover,而它在iPad上运行良好.

关于如何在iPhone中做到这一点的任何想法.

据我搜索,我找不到任何东西.

无论如何要使弹出窗口出现在iphone中,因为它在iPad中受到赞赏!

uipopovercontroller ios uipopover uipopoverpresentationcontroller

5
推荐指数
1
解决办法
1824
查看次数

UIModalPresentationPopover - 箭头方向向上,防止内容视图从箭头尖端开始

在 iOS 13 中,作为模型呈现的 UIViewcontroller 视图恰好从箭头的尖端开始。因此,我所有弹出窗口中的顶部横幅都被剪掉了。我可以防止这种情况发生吗?我希望我的 UIView 不是从箭头开始,而是一旦箭头完成。红色视图必须从箭头底部开始

uipopovercontroller uipopover uipopoverpresentationcontroller ios13

5
推荐指数
1
解决办法
549
查看次数

Popoverpresentation viewcontroller 和约束​​问题

我尝试调用 popoverpresentation 视图控制器以在 ipad 上共享图像,但是当发生这种情况时,我收到错误“无法满足约束”。

事情是为了解决这个问题,我删除了所有约束,这样我就可以重新开始,但即使没有约束,我也会遇到同样的错误。

所以我的问题是。这是一个错误还是我必须为 popoverpresentation 视图控制器设置约束。

这是我的代码:

print("Current device is an iPad")
print("Current device is \(UIDevice.current)")

if let imageCheck = image {
    let imageToShare = [imageCheck]
    let activityVC = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)

    activityVC.popoverPresentationController?.sourceView = super.view
    self.present(activityVC, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

和控制台中的错误:

Current device is an iPad
Current device is <UIDevice: 0x280c8d260>
2019-12-26 20:31:22.662290+0100 Petfie[2184:756367] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't …
Run Code Online (Sandbox Code Playgroud)

xcode constraints ios swift uipopoverpresentationcontroller

3
推荐指数
1
解决办法
539
查看次数