gpt4 book ai didi

ios - 使用Size Classes时如何处理安全区域?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:46 25 4
gpt4 key购买 nike

我刚刚创建了一个简单的红色 View 并为其创建了 4 个约束(顶部、左侧、右侧、底部)。我正在尝试使用大小类进行自适应布局,但无法在“横向右”方向上实现正确的布局:

  1. 在纵向模式下一切正常。底部、左侧、右侧边缘到 super View 的边缘,顶部边缘到安全区域的顶部。
  2. 在横向左模式下一切正确。上、右边缘到 super View 的边缘,左和下边缘到安全区域的边缘。
  3. 但在横向右模式布局不正确。我预计,左边缘将等于 superview 的左边缘,但实际上它等于安全区域。右边缘也一样:我希望它等于安全区域的边缘,但实际上它等于 super View 的边缘。如何修复

Interface Builder Screenshot Portrait Mode Landscape Left Landscape Right

最佳答案

首先为大小类创建单独的常量仅用于顶部约束。看看我的图像。然后为前导和尾随约束创建导出。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var conTrailing: NSLayoutConstraint!
@IBOutlet weak var conLeading: NSLayoutConstraint!

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.setOrientationAllignment()
}

func setOrientationAllignment() {
switch UIDevice.current.orientation {
case .portrait:
self.conLeading.constant = 0
self.conTrailing.constant = 0
case .landscapeLeft:
self.conLeading.constant = 40
self.conTrailing.constant = 0
case .landscapeRight:
self.conLeading.constant = 00
self.conTrailing.constant = 40
default:
break
}
self.view.layoutSubviews() // no need now
self.view.layoutIfNeeded()
}

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
self.setOrientationAllignment()
}
}

Xcode screenshots

关于ios - 使用Size Classes时如何处理安全区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56564917/

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