繁体   English   中英

如何处理iPhone X,Xs,Xs Max,Xr屏幕边缘

[英]How to Handle iPhone X, Xs, Xs Max, Xr Screen Edge

我在GameScene中的iPhone X上绘制,缩放和定位路径时遇到问题。 似乎frame.minX在屏幕的物理范围之外(请参见比较在iPhone X和iPhone 8s上模拟的相同代码的图像)。 在绘制,缩放和定位各种SKShapeNode,SKNode,SKSpriteNode等时,如何处理此屏幕插图? 我希望能够在绘制时轻松参考屏幕的真实边缘。

iPhone X其他iPhone

请注意,添加子视图效果很好(如果使用UIScreen.main.bounds而不是frame,则UIViews,按钮等都将与屏幕边缘对齐)

我曾尝试在参照框架和屏幕时绘制SKShapeNodes,但都无法精确地绘制iPhone X屏幕的真实边缘和其他iPhone的真实边缘。

override func didMove(to view: SKView) {
        let shape = SKShapeNode()
        shape.path = UIBezierPath(rect: CGRect(x: 0, y: 0, width: 200, height: 200)).cgPath
        shape.fillColor = .green
        shape.position = CGPoint(x: frame.minX, y: frame.maxY - shape.frame.height)
        addChild(shape)
}

对于所有模拟,绿色方块与屏幕的左边缘完美对齐。 但是,在iPhone X,Xs,Xs Max和Xr上并非如此。

自然,在StackOverflow上提出问题后,我很快就能解决问题。 对于那些在页面上偶然遇到类似问题的人:

问题在于如何根据屏幕尺寸绘制GameScene。 由于iPhone X的屏幕比例为〜19.5:9(其他iPhone上为16:9),因此边框被裁剪。

要解决此问题,请在scene.scaleMode .resizeFill设置为.resizeFill而不是.aspectFill

scene.scaleMode = .resizeFill

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM