iOS

iPhone XでのUINavigationBar/UITabBarの背景をFitさせる方法

投稿日:

iPhone Xになって、UINavigationBarの高さが変わりました。それによりUINavigationBarの背景画像のサイズが合わず、デザインが崩れてしまいました。詳細は勉強中なのですが、対応する方法を見つけたので、メモ書きしておきます。


let img = UIImage(named: "nav-background")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 30, right: 0), resizingMode: .stretch)
UINavigationBar.appearance().setBackgroundImage(img, for: .default)

ポイントは、resizableImageでストレッチさせることです。一般的な方法だと思いますが、iOS実装で画像ストレッチをあまり使ったことがなかったので、すぐに解決できませんでした。

また、resizableImageの返り値がリサイザブルなUIImageですので、UIImageオブジェクトに対して、メソッドを読んだだけではいけません。代入するか、メソッドの結果を利用する必要があります。

UIEdgeInsetsは、Androidの9-patchほど多機能ではないようですが、ストレッチさせる領域を指定すればよいようです。
例の場合、画像の上の方をストレッチしてほしい場合になります。

引用元

UINavigationbar background image too smalldevno.com







-iOS

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スパム対策に簡単な計算にご協力ください。 *

関連記事

no image

Coredataのリレーション代入で「NSInvalidArgumentException」発生

Coredataの使用中に、リレーション(OneToMany)に値を代入すると、下記エラーが出る。

発生条件はよくわからないが、iOS …

no image

TestFlightで「Appをダウンロードできません」でインストール出来ない

iOSアプリの申請中に、審査が遅いなと一週間も待っていた挙句に、そういえばTestFlightでテストしてないなと思い、インストールしようとしたところ、「Appをダウンロードできません」と言われて、途 …

no image

ESETがiOSシミューレーターを遮断する

iOSシミューレーターが時々、ネットに繋がらなくなるのですが、調べているとESETが遮断しているという話があったのですが、なかなか接続できませんでした。 たまに、勝手に接続されるようになるのですが、ま …

no image

addGestureRecognizerしたViewでボタンが反応しない時

MKMapViewにWildcardGestureRecognizerを使って、タップイベントを横取りしているのですが、そのときにUIButtonのタップも奪い取ってしまうので、その対応。他にもっとい …

no image

Xcode8でLink error

Xcode8にしてから、Link errorに悩まされました。 テンプレートプロジェクトからSwift3のWatchOSアプリを作っているのですが、最初からエラーになってしまいます。 Alamofir …




アプリをリリースしました!まだまだ機能や情報も足りてませんがよろしくお願いします。

サイクリングマップ

Google Play で手に入れよう

kitatamittakaと申します。IT系で詰まったことを自分のためと、ひょっとしたら誰かのために残そうと思います。

仕事

プログラミング好きのSE
仕事でプログラミングすることはあまりありません。

趣味

IT全般
新しい技術やガジェットに興味があります。
ロードバイク
別のブログを書いています。
SEがロードバイクに乗る
古代ローマの歴史
ローマ人の物語を読みました
映画
好きなのはガタカ、ペイフォワードなど
ブログランキング・にほんブログ村へ

モッピー!お金がたまるポイントサイト