【发布时间】:2016-11-02 10:22:54
【问题描述】:
我的视图控制器应该是这样的:
有时是这样的:
我想在圆圈中显示一个视图控制器,但是,几乎每次显示圆圈中的视图控制器 (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 上不行,有什么问题?
【问题讨论】:
-
您能否包含所需显示的屏幕截图? (来自 iPhone)
-
@Danoram 抱歉回复晚了,请查看编辑
-
你能拍出更好的照片吗?我不明白有什么问题。并可能突出显示它们?
-
@Honey 您是否注意到在第二个屏幕截图中,部分文本不在圆圈内?圆圈中有一个视图控制器,它应该在圆圈的范围内
-
也许它可以解决你的问题。设置 resultViewController 的框架后,您可以将其视图的中心设置为
resultViewController.view.center = self.view.center