通常、ビューの先頭と末尾の制約を設定しました。私はその高さを静的な325に設定しました。また、下部の制約については、2つの制約1.メインビューの下部の制約をビューの下部の制約に設定しました。2.メインビューの下部の制約とビューの上部の制約。ユーザーのアクションでは、アニメーションでビューを非表示にするだけです。したがって、ビューが画面に表示され、アプリがバックグラウンドになると、ビューの制約が自動的に変更され、ビューが非表示になります。この問題はiOS 13デバイスでのみ発生します。
viewWillAppear()の制約を更新しようとしましたが、iOS 13では、アプリがバックグラウンドからアクティブ化されたときにViewControllersのviewWillAppearも呼び出されません。また、これは制約を更新するための良いアイデアだとは思いません。
class ViewController: UIViewController {
@IBOutlet weak var topConstraint: NSLayoutConstraint!
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
self.topConstraint.isActive = false
self.bottomConstraint.isActive = true
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
}
}
アプリの状態がフォアグラウンドからバックグラウンドに、またはその逆に変化したときに、制約を変更または更新したくありません。
同じことで私を助けてください。
TIA
.frame = ...
ステートメントがない)と仮定すると、コードは正常に機能しているはずです。イベントで他のコードが実行されていない限り、アプリがバックグラウンドからフォアグラウンドに移行するときに呼び出されるViewDidLoad()
べきではありません。
contentView
、下部に配置したいので(「オフスクリーン」になっています)、アニメーションを表示して上に移動します...その後、アプリはバックグラウンドに移動します、そしてアプリがフォアグラウンドに戻ったときにビューを表示したままにしますか?新しいアニメーションはありませんか?