[英]modalPresentationStyle formSheet issues on iphone XR, XS Max
[英]How to Handle iPhone X, Xs, Xs Max, Xr Screen Edge
我在GameScene中的iPhone X上绘制,缩放和定位路径时遇到问题。 似乎frame.minX在屏幕的物理范围之外(请参见比较在iPhone X和iPhone 8s上模拟的相同代码的图像)。 在绘制,缩放和定位各种SKShapeNode,SKNode,SKSpriteNode等时,如何处理此屏幕插图? 我希望能够在绘制时轻松参考屏幕的真实边缘。
请注意,添加子视图效果很好(如果使用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.