ios - 每次呈现时查看 Controller 原点更改

标签 ios swift uiview

我的 View Controller 应该是这样的:

enter image description here

有时候是这样的:

enter image description here

我想在圆圈中显示一个 View Controller ,然而,几乎每次圆圈中的 View Controller (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 上运行不佳,有什么问题吗?

最佳答案

我发现了这个问题,它实际上是对 Regular-Regular 尺寸类的缺失约束导致了这个问题,我通过在底部布局指南中添加一个间距来修复它,该间距曾经被错放。

感谢大家的想法。

关于ios - 每次呈现时查看 Controller 原点更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377515/

相关文章:

ios - 返回 Nil 的文本字段

swift - 当我在异步回调中设置一个对象时会发生什么?

iphone - 我的 subview 之外的触摸事件应该导致 subview 消失

ios - 根据设备设置字体大小的最佳做法是什么?

cocoa-touch - 如果按下UIButton Xcode

swift - 无法使用 NSURLSession 从数据库获取?

iOS Swift 库 - 目标具有传递依赖性 Google Analytics

ios - 在 iPhone 应用程序中绘制/动画此场景的最佳方式

objective-c - 用于将按钮固定到右下角的 UIView AutoresizingMask

ios - 创建用于测试的离线版本 : React Native