2017年11月03日

UINavigationBarがStatusBarに重なっちゃう

XCode9とiOS11の組み合わせだと、こうなっちゃうらしい。
一説によると、Xcodeのバグだとかなんとか…
ほんと、もういい加減にしてくれよApple。

とりあえずこちらの記事
https://qiita.com/KikurageChan/items/4152c2d8ac89c601a054
を参考に、Objective-Cに書き換えて対応した。
ただし、この中でクラスによってframeのサイズを変えている部分は、そのままだとiPhoneXで表示がずれる。
全て同じサイズのframeにしたら、うまくいった。
理由は知らん。

@implementation CustomNavigationBar
- (void)layoutSubviews
{
[super layoutSubviews];

float statusBarH = [[UIApplication sharedApplication] statusBarFrame].size.height;

for (id subview in self.subviews) {

float x = [subview frame].origin.x;
float y = [subview frame].origin.y + statusBarH;
float w = [subview frame].size.width;
float h = [subview frame].size.height;

[subview setFrame:CGRectMake(x, y, w, h)];
}
}
@end
posted by horigood at 01:09| Comment(0) | TrackBack(0) | アプリ色々

2017年11月01日

iPhoneXのスクリーンサイズが取得できない?

「既存のアプリをiPhoneXに対応させな」っていう指令が、Appleさん&Googleさんから届いたので、気が進まなかったけどアップデート作業に取り掛かった。
んだけど、しょっぱなからいきなり引っかかった。
iPhoneXのスクリーサイズが取得できない。
ググってみたら、Default画像(LoaunchImage)サイズが1125 x 2436ってことなのでこれを作り、「Default-812h@3x.png」ってファイル名で追加したけど、やっぱりダメ。

で、いろいろ調べた結果、下記のサイトに行き着いた。
http://nyahhoiya.com/program/memo/memo-ios.html

リンク先にある記述に、iPhoneX用の

<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-812h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 812}</string>
</dict>


を追加したら、解決。
ありがとうございました。

それにしても、毎度毎度、メンドクセーぞ、Apple!!!

2017.11.8 追記
info.plistを編集しなくても、images.xcassets ってやつに、それぞれのDafault画像を登録してやればいいらしい。
まあ、メンドクセーことには変わりない。

2017.11.15 追追記
次のアプリは、やっぱりinfo.plistを編集してやらないとダメだった。よくわからん。
posted by horigood at 20:30| Comment(0) | TrackBack(0) | アプリ色々