当我在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中,此问题即将出现。
关于如何解决这个问题有什么建议吗?
正如标题所示,无论我为popoverLayoutMargins提供什么价值,似乎都没有发生.
我试图显示一个锚定到UIButton的弹出菜单.一切正常,只是我想让popover扩展屏幕的宽度.
我试过玩过preferredContentSize的UIViewController.
问题是我不能让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必须等到下一个更新周期才能在屏幕上显示新内容.这种延迟使您有时间为弹出框配置演示控制器.
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
我的应用程序中包含以下弹出窗口:
但我希望它看起来像经过编辑的图像(请注意,即使箭头也带有边框):
如今有可能吗?我已经在内尝试了以下方法UIViewController:
self.view.layer.borderColor = UIColor.white.cgColor
self.view.layer.borderWidth = 2
Run Code Online (Sandbox Code Playgroud)
但这对箭头无效。是否有任何转身?
calayer uiview popover swift uipopoverpresentationcontroller
我无法将popover控制器显示为iPhone中的popover,而它在iPad上运行良好.
关于如何在iPhone中做到这一点的任何想法.
据我搜索,我找不到任何东西.
无论如何要使弹出窗口出现在iphone中,因为它在iPad中受到赞赏!
uipopovercontroller ios uipopover uipopoverpresentationcontroller
在 iOS 13 中,作为模型呈现的 UIViewcontroller 视图恰好从箭头的尖端开始。因此,我所有弹出窗口中的顶部横幅都被剪掉了。我可以防止这种情况发生吗?我希望我的 UIView 不是从箭头开始,而是一旦箭头完成。
uipopovercontroller uipopover uipopoverpresentationcontroller ios13
我尝试调用 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) uipopoverpresentationcontroller ×7
ios ×4
swift ×4
ios13 ×2
popover ×2
uipopover ×2
calayer ×1
constraints ×1
uiview ×1
xcode ×1