Xcode 5 でカスタムサイズのビューを安全に扱うために : iPhone プログラミング

SPECIAL


カスタムサイズのビューを Xcode 5.0 で扱う上での癖を知る

Xcode では Attributes inspector の Size 設定を "Freeform" にすることで、UIViewController に設定するルートビューのサイズを自由に調整できるようになっています。

ただ、このように自由サイズに設定したビューを Xcode 5.0 で扱うときには、ひとつだけ注意しないといけないことがあるようでした。

Status Bar を None に設定すること

Xcode 5.0 での Freeform サイズのビューで注意すべきは、UIViewController の Attributes inspector で "Status Bar" を "None" に設定すること、この一点です。

このようにすることで Storyboard 上では、次のような、ステータスバーの存在しないレイアウトとして表示されます。

カスタムサイズのビューの場合は -addSubview メソッドなどを使って既存のビューに追加することになると思うので、そもそもステータスバーを必要になることはまずないと思います。

いずれにしても、Storyboard で設定する "Status Bar" はあくまでもレイアウトの目安として使うものなので、ここでステータスバーを何かに設定したからといって、その設定どおりに振る舞いが変わるわけでもありません。

Status Bar を None に設定しなかった場合に起こり得ること

指定したのとは違うサイズが設定される

カスタムサイズ UIViewController の Attributes inspector で Status Bar が "None" に設定されていないと、そのビューのサイズを設定したときに、指定したサイズとは若干ずれて登録されたりします。

たとえば、とあるカスタムサイズの UIViewController で、ビューの高さを調整したとします。

サイズを入力して Enter を押せば、そのサイズがコントロールに登録されるはずですが…。

ところが、入力したものと少し違うサイズが設定されました。

これはどうやら Attributes inspector で指定されているステータスバーの高さ 20px が、カスタムサイズのビューの高さを指定したときに、入力された値にそれを加味して計算してしまう様子です。

ある時、縦幅が極端に跳ね上がることも

また、Storyboard を開いてみると、ときどきカスタムサイズのビューの高さが大幅に大きく拡張されてしまうことがありました。

こちらもどうやら Attributes inspector で Status Bar が "None" になっていないことが原因のようで、これを "None" に設定したら、勝手に変に自動調整されることはなくなりました。

[ もどる ]