视图控制器原点每次显示都会发生变化

时间:2016-11-02 10:22:54

标签: ios swift uiview

这是我的视图控制器应该是:

enter image description here

有时这是:

enter image description here

我想在圆圈中显示一个视图控制器,但是,几乎每次呈现圆圈中的视图控制器(ResultViewController)时,它的位置都不同,尽管它的属性根本不会改变。这是我的代码:

func openCircle(withCenter center: CGPoint, dataSource: ([Items], Int, String)){
    self.addCircle(withCenter: center, dataSource: dataSource)
}

func addCircle(withCenter circleCenter: CGPoint, dataSource: ([Items], Int, String)) {

    let longerSide = fmax(view.frame.size.height, view.frame.size.width)
    let shorterSide = fmin(view.frame.size.height, view.frame.size.width)

    let circleRadius = longerSide / 2
    var resultViewOrigin = CGPoint()
    var resultViewSize = CGSize()

    if UIDevice.current.userInterfaceIdiom == .pad {

        let rectWidth = shorterSide / 2
        let rectHeight = sqrt(abs(circleRadius * circleRadius - rectWidth * rectWidth)) + view.frame.size.height - circleCenter.y
        resultViewSize = CGSize(width: rectWidth, height: rectHeight)
        resultViewOrigin = CGPoint(x: (view.frame.size.width - rectWidth) / 2, y: view.frame.size.height - rectHeight)

    } else {
        resultViewOrigin = CGPoint(x: 0.0, y: 0.0)
        resultViewSize = CGSize(width: view.frame.size.width, height: view.frame.size.height)
    }

    let resultViewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ResultVC") as! ResultViewController
    resultViewController.transitioningDelegate = self
    resultViewController.modalPresentationStyle = .custom
    resultViewController.dataSource = dataSource
    resultViewController.view.frame = CGRect(origin: resultViewOrigin, size: resultViewSize)

    transition.circle = UIView()
    transition.startingPoint = circleCenter
    transition.radius = circleRadius
    transition.circle.frame = circleFrame(radius: transition.radius, center: transition.startingPoint)

    present(resultViewController, animated: true)
}

它在iPhone上运行良好,而不是在iPad上运行,问题是什么?

2 个答案:

答案 0 :(得分:3)

我发现了这个问题,它实际上是一个缺少常规 - 常规尺寸类的约束引起了这个问题,我通过在底部布局指南中添加一个间距来修复它,这个部分曾经被错放了。

感谢大家的想法。

答案 1 :(得分:1)

您可以使用容器视图而不是呈现视图控制器。您可以通过编程方式或在界面构建器中创建它们(请参阅Apple docs)。