viewDidLayoutSubviews でフレームを変更するという通常の回答が機能しないので、私のコードに間違いが見つからない限り、私は尋ねています。フレームは正しい幅と高さに設定されますが、iOS 7 はフレームを尊重しません。
現在、かなり前にリリースされたアプリは次のようになり、iOS 6 および 7 で動作します: https://itunes.apple.com/se/app/eksjo/id435475192?mt=8
再コンパイルすると次のようになります: https://www.dropbox.com/s/pzyv2vhtlmlxkoe/Photo%202013-12-11%2009%2047%2030.png
-(void)viewWillAppear:(BOOL)animated {
UIImageView *iv=[[UIImageView alloc] initWithFrame:r(320-102/2,0,102,44)];
iv.image=[UIImage imageNamed:@"Eksjologo5bar.png"];
self.navigationItem.titleView=iv;
[iv release];
}
-(void)viewDidLayoutSubviews {
CGRect frame=self.navigationItem.titleView.frame;
frame.size.width=102;
frame.size.height=44;
self.navigationItem.titleView.frame=frame;
}
やりたいことは、ナビゲーション バーの中央にロゴ イメージを配置することだけです。これを行い、iOS 6.x との互換性を維持するために、viewWillAppear コードの最小限のコード変更を探しています。
編集: iOS 7 の問題ではなく、iOS 6 の問題である可能性もあります。なぜそれがこの質問のように行われるべきなのかを説明できれば、それは私の質問への答えです: My UINavigationitem's TitleView Getting Expanded in ios 6