- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一款游戏,现在我注意到它在 iPhone X 上看起来不像我预期的那样。我需要在 右上角
上放置一个标签,在 iPhone X 上标签根本没有显示。所以我阅读了有关 Safe Area
的内容并想出了这个解决方案:
游戏 View Controller :
override func viewDidLoad() {
super.viewDidLoad()
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
self.view.layoutSubviews()
}
override func viewDidLayoutSubviews() {
print("viewDidLayoutSubviews")
print(self.view.safeAreaInsets.top)
print(self.view.safeAreaInsets.bottom)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let scene = GameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = false
skView.showsNodeCount = false
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
在我的 GameScene 中,我在用户执行此操作时
override func didMove(to view: SKView) {
var label = SKLabelNode()
if let safeAreaInsets = self.view?.safeAreaInsets {
var y: CGFloat = 0.0
if safeAreaInsets.top == 0.0 { iPhone SE, 6/7/8, Plus
y = self.frame.height - 10
} else { // iPhone X
y = frame.maxY - safeAreaInsets.top - 5
}
label.position = CGPoint(x: self.frame.width -100, y: y)
}
label.text = "Highscore: 0"
label.zPosition = 5
}
这可行,但我真的需要检查 safeAreaInsets.top == 0.0
是否需要为 iPhone X 使用 safeAreaInsets
吗?安全区域不应该是同一部手机吗?
2:为了能够获得 safeAreaInsets
,我需要调用 self.view.setNeedsLayout()、self.view.layoutIfNeeded()、self.view.layoutSubviews()
(可能不是全部,而是其中一些)。如果我不使用它,所有 safeAreaInsets
始终为 0.0。这是为什么?
最佳答案
private func safeAreaInsets() -> UIEdgeInsets {
if #available(iOS 11.0, *) {
return UIApplication.shared.windows.first?.safeAreaInsets ?? .zero
} else {
return .zero
}
}
关于swift - SpriteKit 中的 safeAreaInsets 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943391/
我希望我的 collectionView 在 iOS 11 的状态栏后面流血......但是我的 collectionView 的内容总是偏移 20.0 显然是由于 safeAreaInsets 有没
我为 View 的约束创建了扩展。您可以在下面找到代码,但是在新发布的 iPhone X 之后我们需要使用 safeAreaInsets 但我不知道如何实现该属性。如果你能帮助我,我会很高兴。 谢谢
我需要调整 iPhone X 的 View ,但我不知道 safeAreaInsets 何时初始化。根据文档, If the view is not currently installed in a
我正在开发一款游戏,现在我注意到它在 iPhone X 上看起来不像我预期的那样。我需要在 右上角 上放置一个标签,在 iPhone X 上标签根本没有显示。所以我阅读了有关 Safe Area 的内
我有一个应用程序以编程方式完成所有 UI,而无需使用自动布局或任何类型的约束。屏幕底部是一个 UIToolbar。我试图将其布局为与 iPhone X 屏幕的底部安全区域配合良好,但由于 VC 的设计
我有一个 rootViewController,它有一个 subview Controller (fullScreenViewController),其 View 不时显示在 View 上方 (但作为
当我尝试在我的 View Controller 中检索 viewDidLoad 中的 safeAreaInsets 时,它在 iPhone X 上返回 (0, 0, 0, 0),我知道这是错误的。文档
我正在尝试为 iPhoneX 更新 viewWillTransition(to size: with coordinator:) 方法。但是我无法获取 safeAreaInsets 值的目的地。请帮忙
我有一个水平分页 UIScrollview ,以下是我对前导/尾随的 VFL 约束 H:|-0-[ScrollView]-0-| (与 super View 对齐)。 我有左/右 safeAreaIn
我正在更新我的应用程序以使其适用于 iPhone X。除一个 View 外,所有 View 现在都可以正常工作。我有一个 View Controller ,它呈现一个覆盖整个屏幕的自定义 UIView
我是一名优秀的程序员,十分优秀!