簡體   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