SceneView 的子视图并不总是居中
SubView of SceneView not always centered
将 CoachingOverlay 添加到 SceneView 时(在 viewDidLoad 中),叠加层有时不居中而是出现在屏幕的右下方。为什么会这样?如果屏幕有双倍尺寸,右下角的叠加层将居中,那么尺寸还没有设置吗?或者可能是因为我在自定义反应本机模块中使用 ARKit?谢谢
coachingOverlay.translatesAutoresizingMaskIntoConstraints = false
sceneView.addSubview(coachingOverlay)
NSLayoutConstraint.activate([
coachingOverlay.centerXAnchor.constraint(equalTo: sceneView.centerXAnchor),
coachingOverlay.centerYAnchor.constraint(equalTo: sceneView.centerYAnchor),
coachingOverlay.widthAnchor.constraint(equalTo: sceneView.widthAnchor),
coachingOverlay.heightAnchor.constraint(equalTo: sceneView.heightAnchor)
])`
同样的事情发生在 MBProgressHUD 上:
self.hud = MBProgressHUD.showAdded(to: self.sceneView, animated: true)
请试试这个
yourSubView.center = CGPoint(x: yourView.frame.size.width / 2,
y: yourView.frame.size.height / 2)
我通过在 view/sceneview 和 hud 和 coachingoverlay 子视图之间添加一个额外的视图解决了这个问题:
let container = UIView(frame: UIScreen.main.bounds)
self.view.addSubview(container)
self.hud = MBProgressHUD.showAdded(to: container, animated: true)
NSLayoutConstraint.activate([
self.hud.centerXAnchor.constraint(equalTo: container.centerXAnchor),
self.hud.centerYAnchor.constraint(equalTo: container.centerYAnchor),
self.hud.widthAnchor.constraint(equalTo: container.widthAnchor),
self.hud.heightAnchor.constraint(equalTo: container.heightAnchor)
])
将 CoachingOverlay 添加到 SceneView 时(在 viewDidLoad 中),叠加层有时不居中而是出现在屏幕的右下方。为什么会这样?如果屏幕有双倍尺寸,右下角的叠加层将居中,那么尺寸还没有设置吗?或者可能是因为我在自定义反应本机模块中使用 ARKit?谢谢
coachingOverlay.translatesAutoresizingMaskIntoConstraints = false
sceneView.addSubview(coachingOverlay)
NSLayoutConstraint.activate([
coachingOverlay.centerXAnchor.constraint(equalTo: sceneView.centerXAnchor),
coachingOverlay.centerYAnchor.constraint(equalTo: sceneView.centerYAnchor),
coachingOverlay.widthAnchor.constraint(equalTo: sceneView.widthAnchor),
coachingOverlay.heightAnchor.constraint(equalTo: sceneView.heightAnchor)
])`
同样的事情发生在 MBProgressHUD 上:
self.hud = MBProgressHUD.showAdded(to: self.sceneView, animated: true)
请试试这个
yourSubView.center = CGPoint(x: yourView.frame.size.width / 2,
y: yourView.frame.size.height / 2)
我通过在 view/sceneview 和 hud 和 coachingoverlay 子视图之间添加一个额外的视图解决了这个问题:
let container = UIView(frame: UIScreen.main.bounds)
self.view.addSubview(container)
self.hud = MBProgressHUD.showAdded(to: container, animated: true)
NSLayoutConstraint.activate([
self.hud.centerXAnchor.constraint(equalTo: container.centerXAnchor),
self.hud.centerYAnchor.constraint(equalTo: container.centerYAnchor),
self.hud.widthAnchor.constraint(equalTo: container.widthAnchor),
self.hud.heightAnchor.constraint(equalTo: container.heightAnchor)
])