1. ホーム
  2. ios

iOS 11 navigationItem.titleView Widthが設定されていない。

2023-10-29 15:27:01

質問

iOS11でnavigationItem.titleViewの幅が画面の幅いっぱいにならない挙動が見受けられます。

私はtitleViewとして設定したカスタムビューを持っています。iOS11 以前では、このビューはナビゲーション バーの領域いっぱいに表示されました。しかし、iOS 11 では、画面の幅を満たすようにサイズ変更されません。

titleViewを設定する前に、ビューのフレームを設定しようとしましたが、うまくいきません。titleViews の superview にレイアウト制約を強制することも試しましたが、うまくいきません。

スクリーンショットを添付します。

iOS10です。

iOS11です。

他にこのような経験をされた方はいらっしゃいますか?

どのように解決するのですか?

私はそれを理解しました。ビューとテキストフィールドの intrinsicContentSize ゲッターをオーバーライドする必要がありました。

幅をCGFloat.greatestFiniteMagnitudeに設定し、常に画面と同じ幅になるようにしました。

更新しました。

私はこの問題に数時間を費やしたので、他の誰かがすべてのものを一緒に締めることによって、より速く追いつくことを望みます。

のカスタムサブクラスを作成しました。 TitleView という名前の CustomTitleView というコードです。

import UIKit

class CustomTitleView: UIView {

  override var intrinsicContentSize: CGSize {
    return UIView.layoutFittingExpandedSize
  }
}

と、最初から見落としていた一番大事な部分はこれです。