在横向模式下设置弹出窗口的高度

时间:2017-04-18 10:41:25

标签: ios swift popover

我想在横向模式下修改弹出窗口的高度,但它只能在纵向模式下工作。

我希望它的高度等于screenSize.height * 0.7,但它不适用于我的代码。

enter image description here

这是我的代码:

if let orientation = UIDevice.current.value(forKey: "orientation") as? Int {
        let diamondViewController = DiamondViewController()
        diamondViewController.mode = .buyDiamondPopup
        diamondViewController.resetBackgroundColor = {
            self.view.backgroundColor = .clear
        }

        let screenSize = UIScreen.main.bounds
        if orientation == 3 { // LandscapeRight
            diamondViewController.preferredContentSize = CGSize(width: screenSize.width * 0.6, height:
                screenSize.height * 0.7)
        } else {
            diamondViewController.preferredContentSize = CGSize(width: screenSize.width - 60, height:
                min(screenSize.height - 180, CGFloat(5 * 70 + 110) ))
        }
        diamondViewController.modalPresentationStyle = .popover
        if let popover = diamondViewController.popoverPresentationController {
            popover.permittedArrowDirections = .init(rawValue: 0)
            popover.sourceView = self.view
            popover.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
            popover.delegate = self
            self.view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
            self.present(diamondViewController, animated: true, completion: nil)
        }
    }

...

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    return .none
}

2 个答案:

答案 0 :(得分:2)

而不是这个

 diamondViewController.preferredContentSize = CGSize(width: screenSize.width * 0.6, height: screenSize.height * 0.7)

请尝试以下

 diamondViewController.view = CGRect(x: diamondViewController.view.frame.origin.x ,y: diamondViewController.view.frame.origin.y ,width: screenSize.width * 0.6, height: screenSize.height * 0.7)

如果它没有帮助,请告诉我。

答案 1 :(得分:0)

您是否尝试过使用“Vary for traits”工具?它允许您根据设备方向应用不同的约束。它可以在故事板右下角附近的不同约束选项旁边找到。