一説によると、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