4

iOS6で、何らかの理由でUINavigationBarからシャドウを削除できません。なぜこれが機能しないのですか?私は次のことを試しました:

if ([[UINavigationBar appearance]respondsToSelector:@selector(setShadowImage:)]){
    [[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];
}

if ([[UINavigationBar class]respondsToSelector:@selector(setShadowImage:)]){
    [[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];
}
4

3 に答える 3

3

NavigationBarインスタンスで作業を行う必要があります...

if ([navigationBarInstance respondsToSelector:@selector(setShadowImage:)]){
    [navigationBarInstance setShadowImage:[[UIImage alloc] init]];
}

編集:何らかの理由で本当にクラスのチェックを実行する必要がある場合。これは機能します:

if ([UINavigationBar instancesRespondToSelector:@selector(setShadowImage:)]) {
}
于 2012-12-29T16:15:52.537 に答える
2

ドキュメントを読むまで、これは私をしばらく困惑させました!

注: カスタム シャドウ イメージを表示するには、メソッドでカスタム背景イメージも設定する必要がありますsetBackgroundImage:forBarMetrics:。デフォルトの背景画像が使用される場合、このプロパティの値に関係なく、デフォルトの影の画像が使用されます。

于 2013-06-04T19:08:10.900 に答える
1

マイク・ポラードはそれを正しく理解しています。

iOS 6 での下にある影を削除するにはUINavigationBar、影の画像を空白に設定するだけでなく、カスタムの背景画像を設定する必要がありますUIImage

CustomViewController.m

- (void)viewDidLoad
{
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Background"] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
}

上記の例では、「背景」はプロジェクトの PNG 画像になります。

于 2013-07-24T20:58:02.927 に答える