- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个注销按钮,它显示一个操作表,该操作表使用以下代码将 iPad 上的弹出窗口直接置于窗口中间:
popoverController.sourceRect = CGRect(x: window.bounds.midX, y: window.bounds.midY, width: 0, height: 0)
popoverController.permittedArrowDirections = []
此处显示在窗口中间:
但是当我旋转 iPad 时,它会将自己定位到左下角:
为什么我旋转 iPad 时它不会停留在窗口的中央?我该如何修复它以使其保持在旋转中心?
操作表:
fileprivate func logOut(){
let actionSheet = UIAlertController(title: nil, message: "Are you sure you want to log out?", preferredStyle: .actionSheet)
let cancelActionButton = UIAlertAction(title: "Cancel", style: .destructive){ (action) in
// ...
}
let logoutActionButton = UIAlertAction(title: "Log Out", style: .default){ (action) in
// ...
}
actionSheet.addAction(logoutActionButton)
actionSheet.addAction(cancelActionButton)
if let popoverController = actionSheet.popoverPresentationController{
popoverController.popoverBackgroundViewClass = PopoverBackgroundView.self
popoverController.sourceView = view
guard let window = UIApplication.shared.keyWindow else {
popoverController.sourceView = view
popoverController.sourceRect = CGRect(x: view.bounds.midX, y: view.bounds.midY, width: 0, height: 0)
popoverController.permittedArrowDirections = []
return
}
window.backgroundColor = .clear
popoverController.sourceRect = CGRect(x: window.bounds.midX, y: window.bounds.midY, width: 0, height: 0)
popoverController.permittedArrowDirections = []
}
tabBarController?.present(actionSheet, animated: true, completion: nil)
}
UIPopoverBackgroundView 的子类:
class PopoverBackgroundView: UIPopoverBackgroundView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.white
}
convenience required init(coder aDecoder: NSCoder) {
self.init(frame: CGRect.zero)
}
override func layoutSubviews() {
super.layoutSubviews()
}
override var arrowOffset: CGFloat {
get {
return 0.0
}
set {
}
}
override var arrowDirection: UIPopoverArrowDirection {
get {
return UIPopoverArrowDirection.up
}
set {
}
}
override class func contentViewInsets() -> UIEdgeInsets {
return UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)
}
override class func arrowBase() -> CGFloat {
return 0.0
}
override class func arrowHeight() -> CGFloat {
return 0.0
}
override class var wantsDefaultContentAppearance: Bool {
get {
return false
}
}
}
最佳答案
您应该在设备旋转时更新框架:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
let bounds = UIApplication.shared.keyWindow?.bounds ?? view.bounds
currentActionSheet?.popoverPresentationController?.sourceRect = CGRect(x: bounds.midX, y: bounds.midY, width: 0, height: 0)
}
您需要将 UIAlertController 或 popoverController 保存到一个变量
weak var currentActionSheet : UIAlertController?
关于ios - 当 iPad 旋转时,ActionSheet 的 PopoverController 不会停留在窗口的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50180485/
我有一个基于 SplitViewController 的应用程序。它在 popoverController 内使用 rootViewController。 rootViewController 通过指
我正在 Xamarin.iOS 平台上开发一个 tableviewcontroller。 当用户点击表格 View 第一部分的第二行时,以下代码起作用。 当用户点击时,会出现弹出 View 。但是,弹
是否可以呈现一个没有方向箭头的弹出 Controller : UIPopoverArrowDirection 最佳答案 实际上,你可以,或者至少可以,(我不确定这个技巧在最新的 SDK 中是否仍然有效
您好,我有一个显示数组的弹出 View 。我想知道是否有一种方法可以让我以某种方式返回选择了数组中的哪个项目。 @IBAction func popOverButton(_ sender: UIBu
在我的应用程序中,我添加了 2 个标签和 2 个按钮,这些按钮连接到一个在 popovercontroller 中弹出日期选择器的函数,当用户选择日期时,相应的标签应该更改。 除了标签一起更新之外,一
有谁知道为什么这段代码不起作用。刚刚在 xamarin 的 hello world 示例中添加了一个 popovercontroller。我总是遇到未处理的异常,但输出中没有其他信息。 public
我正在研究 SO,并认为我已经弄清楚如何做到这一点,但我的测试失败了。我试图从它启动/包含的 View Controller 中关闭一个popovercontroller(我对poc和vc的关系仍然有
我正在使用一个 UIButton,点击它我想在 UITableView 的帮助下显示我的 NSMutableArray 中的内容UIPopOverController 即我想要一个 UITableVi
现在我已经创建了一个带有 tableview 的 popoverController,我还创建了将在 tableview 中显示的数据。然而, table 总是空的。P.S.(委托(delegate)
这个问题在这里已经有了答案: 已关闭10 年前。
我正在使用 PopoverController,我想去掉背景阴影。 Apple 说要对 UIPopoverBackgroundView 进行子类化并为 override class var wants
我在下面的代码中为 iPhone 和 iPad 显示了我的 popOverController。 ViewController *vc = [[ViewController alloc]initWi
我有一个注销按钮,它显示一个操作表,该操作表使用以下代码将 iPad 上的弹出窗口直接置于窗口中间: popoverController.sourceRect = CGRect(x: window.b
你好,我想在主视图 Controller 上展示一个具有弹出功能的 Controller ,谁能帮我解决这个问题??我已经尝试过下面的代码,但它在所有 View 中都是常见的,我希望它在 View 中
我有一个 UINavigationController 作为我的 UIPopoverController 的主视图。我想更改导航栏和工具栏的色调,但似乎无法正常工作。 谁能指出我正确的方向? 这是我现
我是一名优秀的程序员,十分优秀!