[解決済み] Swift のデフォルト AlertViewController の制約を破る
2023-04-27 03:30:05
質問
デフォルトのAlertViewControllerで、スタイルが .actionSheet . なぜか、このアラートでは 制約エラー . ボタンでalertControllerをトリガー(表示)しない限り、ビュー全体では制約エラーは発生しません。もしかして、これは Xcodeのバグでしょうか?
私が得た正確なエラーは次のようなものです。
2019-04-12 15:33:29.584076+0200 Appname[4688:39368] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x6000025a1e50 UIView:0x7f88fcf6ce60.width == - 16 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x6000025a1e50 UIView:0x7f88fcf6ce60.width == - 16 (active)>
これは私が使っているコードです。
@objc func changeProfileImageTapped(){
print("ChangeProfileImageButton tapped!")
let alert = UIAlertController(title: "Change your profile image", message: nil, preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Photo Library", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Online Stock Library", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alert.view.tintColor = ColorCodes.logoPrimaryColor
self.present(alert, animated: true)
}
ご覧のとおり、これは 非常に基本的な . そのため、私はこのような奇妙な動作に非常に困惑しています。 デフォルトの実装 はエラーを発生させないはずですよね?
制約を破ることによって、アラートはすべてのスクリーン・サイズで適切に表示されますが、私が得るどんな助けにも本当に感謝します。
どのように解決するのですか?
このエラーは致命的なものではなく、Appleの未修正のバグと思われます。この制約がアニメーションスタイルに表示されるのは、プレゼンテーションの直後です。 私は提示の前にそれをキャッチして変更(値、関係、優先順位の変更)しようとしました - この動的に追加された制約のため、成功しませんでした。
でアニメーションをオフにすると
self.present(alert, animated: false)
でアニメーションをオフにし
alert.view.addSubview(UIView())
- を使用すると、エラーが消えます。説明できませんが、うまくいきました!
let alert = UIAlertController(title: "Change your profile image", message: nil, preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Photo Library", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Online Stock Library", style: .default, handler: nil))
let cancel = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
alert.addAction(cancel)
alert.view.addSubview(UIView()) // I can't explain it, but it works!
self.present(alert, animated: false)
関連
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み] 実行時に制約の優先順位を変更する方法