2014年11月21日

【iOS SDK】InterfaceBuilderを使った設計でiOS7とiOS8で動きが違う部分

iPhone6,6+のお陰で画面設計が非常にAndroidに近い状態になりました

今回あるお仕事でまたXCodeを触る機会をいただいたので
AutoLayoutなるIBを使った画面設計に奮闘しております



ViewControllerのxib設計は問題ない
TabieViewにつけるCellのカスタムもまぁなんとか実装できましたが

ふつーにUIViewクラスを作り、
後付でxibファイルを作成したもの


 2014-11-21 13.25.25.jpg


こんな感じで設計し、
ルートのViewのCustomClass欄に作成したUIView継承クラスを登録しました
File's Ownerには未登録状態です

このようなカスタムなViewをxibからロードしてViewControllerにaddSubViewする際

    UINib* drumRollViewNib = [UINib nibWithNibName: @"DrumRollView" bundle: nil];
    DrumRollView* drumRollView = [[drumRollViewNib instantiateWithOwner: nil options: nil] firstObject];

    [self.view addSubview: drumRollView];
    self.drumRollView = drumRollView;
    [drumRollView release];

上記をViewDidLoadに明記するとOKと情報を得ていました


iOS7のiPhone5sで確認すると

IMG_0080.PNG

うん、ちゃんとAutoLayoutがきいてフルスクリーンで表示されました

一方iOS8のiPhone5sで実行すると

IMG_0071.PNG


!!!???


なにこれ

こんな感じになってしまい
addSubViewする前にスクリーンサイズでSetFrameしても上記のまま・・・

こういったバージョンで異なる挙動は困りますよねー



解決方法は今のところ
CustomClassの登録をViewではなくFile'sOwnerにしておき
登録したクラスのinitWithCoderメソッド内で
xibファイルをロードしてCustomClass内のViewにAddSubViewする方式ならうまくいきました

しかし、いろいろと面倒くさいのでなんとかならないかなー


そういえばIB上で設計しているときに

 2014-11-21 13.32.01.jpg

これならPortrait画面設計がしやすく
きちんと画面表示を確認しましたが

 2014-11-21 13.32.05.jpg


こっちにしてLandscape状態の画面設計をしたとき
実機やXCodeのプレビューで確認いただくと気づくと思いますが
iOS7では画面が表示されませんでした

どんなにボタンなどを画面の中央に表示するようにしても
いっさい真っ白が画面(ルートのビューの背景カラー?)

しょうがないので回転画面の設計は正方形のanyanyで行うようにしました。


なんか情報があったらメモしよう
タグ:ios7 ios8
posted by ヒイロ at 13:35| 福岡 ☀| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/409322327

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。