gpt4 book ai didi

ios - 如何处理 iPhone X、Xs、Xs Max、Xr 屏幕边缘

转载 作者:行者123 更新时间:2023-11-28 07:24:18 24 4
gpt4 key购买 nike

我在 iPhone X 的 GameScene 中绘制、缩放和定位路径时遇到问题。看起来 frame.minX 超出了屏幕的物理边界(参见比较在 iPhone X 和 iPhone 8s 上模拟的相同代码的图像)。在绘制、缩放和定位各种 SKShapeNodes、SKNodes、SKSpriteNodes 等时,如何处理这个屏幕插图?我希望在绘图时能够轻松地引用屏幕的真实边缘。

iPhone X Other iPhone

请注意,添加 subview 效果很好(如果使用 UIScreen.main.bounds 而不是框架,UIView、按钮等都将对齐到屏幕的边缘)

我尝试在引用框架和屏幕时绘制 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)
}

对于所有模拟,绿色方 block 与屏幕的左边缘完美对齐。然而,在 iPhone X、Xs、Xs Max 和 Xr 上,情况并非如此。

最佳答案

当然,我在 StackOverflow 上提出问题后很快就解决了这个问题。对于那些偶然发现此页面并遇到类似问题的人:

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

要解决这个问题,在 GameViewController.swift 中,将 scene.scaleMode 设置为 .resizeFill 而不是 .aspectFill:

scene.scaleMode = .resizeFill

关于ios - 如何处理 iPhone X、Xs、Xs Max、Xr 屏幕边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57031785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com