私の質問に対する答えはthis questionにありますので、答えは私のUIToolbarビューの自動レイアウトを無効にすることです。iOS 11 UIBarButtonItemイメージはサイズ変更されていません
ビューのために働くと言われているコードは
cButton.translatesAutoresizingMaskIntoConstraints = YES;
あるしかし、私はUIToolbarはUIViewのから継承していないので、それは私のコードに適用されるかはわかりません。
私はゲームで使用する小さなイメージが多く、デバイスや向きによってサイズが異なります。 Appleが新しいデバイスを導入したときに、さまざまなイメージをたくさん用意して新しいイメージを追加するのではなく、160x160のイメージを1つずつ作成し、使用時にサイズを変更することにしました。
// Get the image
NSString *pictFile = [[NSBundle mainBundle] pathForResource:@"Correct" ofType:@"png"];
UIImage *imageToDisplay = [UIImage imageWithContentsOfFile:pictFile];
UIImage *cImage = [UIImage imageWithCGImage:imageToDisplay.CGImage scale:[UIScreen mainScreen].scale orientation:imageToDisplay.imageOrientation];
UIButton *cButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cButton setImage:cImage forState:UIControlStateNormal];
[cButton setTitle:@"c" forState:UIControlStateNormal];
//set the frame of the button to the size of the image
cButton.frame = CGRectMake(0, 0, standardButtonSize.width, standardButtonSize.height);
//create a UIBarButtonItem with the button as a custom view
c = [[UIBarButtonItem alloc] initWithCustomView:cButton];
これはpre11次のようになります。コードは非常に簡単ですiOSの10が、iOSの11
に失敗した - これは、iOS 4からうまく働きました。バーボタンのアイテムは、サイズ変更され、ボトムバーにうまく収まりました。ノート私は正しいコードを見ていることを確認するためにチェックマークのサイズを50%縮小し、予想通りに動作することを確認しました。
は、ここで彼らはXcodeの9.0 GMとiOSのボタンの一番上の行が正しくサイズを変更するが、一番下の行は、タブバーのために割り当てられたスペースを埋めるために拡大していること11.注シミュレータでどのように見えるかです。 iPadsやさまざまなデバイスでも同じ動作が起こります。
自動レイアウトを無効にするか、制約を追加する方法についての任意のアイデア?
ヒントをお寄せいただきありがとうございます。私はObj Cバージョンを追加しました。 – JScarry
素晴らしい!それは私のために働いた。感謝します。 – Bucket