1

UINavigationControllerに戻る矢印が表示されるたびにユニバーサルバックボタンイメージを設定しようとしています。しかし、私が実装しようとするたびに、画像が歪んで伸びます。元の画像は単純な後方矢印です。示されているようしかし、戻るボタンの画像は、(それが普遍的に動作しない)斜めになっている:ユニバーサルカスタムUINavigationBarバックボタンを作成する方法

UINavigationBar with Custom Back Button

私はAppDelegateに次のコードを使用しようとしている - まだ運を。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Attempt 1 
    [[UIBarButtonItem appearance] 
    setBackButtonBackgroundImage:[UIImage imageNamed:@"Back"] 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

    // Attempt 2 
    UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
    buttonBack.image = [UIImage imageNamed:@"Back"]; 
    [[UIBarButtonItem appearance] 
    setBackButtonBackgroundImage:buttonBack.image 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
} 

任意の助けもいただければ幸いです!ありがとう。

答えて

0

戻るボタンのUIImageViewのcontentModeを設定する必要があります。

はUIImageViewのフレームを合わせて、それが画像の縦横比です維持するために画像を設定するには、このコードを使用します。

// Attempt 2 
UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
buttonBack.image = [UIImage imageNamed:@"Back"]; 
// this line sets the aspect mode 
buttonBack.contentMode = UIViewContentModeScaleAspectFit; 
[[UIBarButtonItem appearance] 
setBackButtonBackgroundImage:buttonBack.image 
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
+0

は、残念ながらまだあなたのソリューションと同じ問題を経験。正しいCGRectMake: 'initWithFrame:CGRectMake(0、0、16、16)]'(16 x 16がアイコンサイズです)を設定しようとしました。元のスクリーンショットに表示されたように表示されます。 –

+0

UIImageViewをbackgroundImageではなくUIBarButtonItemのcustomViewとして設定しようとしましたか? –

+0

次のコードを試しましたが、クラッシュエラーが発生しました:** 1。** 'UIView * backButtonView; ** ** 2。**' backButtonView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed: (数字は数字行を表しています) –

0

答えは予想よりずっと簡単でした。追加のコードの一部を削除し、その必要最小限にそれをダウントリム - あなたはこの(AppDelegateで、didFinishLaunchingWithOptions)のようなもので出てくる:

// Custom Back Button 
UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)]; 
buttonBack.image = [UIImage imageNamed:@"Back"]; 
buttonBack.contentMode = UIViewContentModeScaleAspectFit; 
関連する問題