21

インナーシャドウの例

ナビゲーション バーをもう一方の下に配置して、1 つの背の高いナビゲーション バーのように見せようとしています。しかし、iOS 7 では UINavigationBar の上部と下部に内側の影が表示されるようになりました。私は本当にそれを削除する必要があります。しかし、解決策は見つかりませんでした。影がプリレンダリングされているように見えますが、実際にはビューが表示されてから約 0.4 秒でゆっくりと表示されます。

私はほとんどすべてを試しましたが、影はまだそこにあります。このコードを使用して、バーの下の水平線を削除しました。

for (UIView *view in [[[self.navigationController.navigationBar subviews] objectAtIndex:0] subviews]) {
     if ([view isKindOfClass:[UIImageView class]]) view.hidden = YES;
}

しかし、影を削除する方法がわかりません。どうもありがとう!

私はこれを試しました:

[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];

しかし、そのコードはバーの下の水平線さえ削除しません (このメソッドにはカスタムの背景画像が必要です)。Xcode バージョン 5.0 (5A11365x) を使用しています

4

6 に答える 6

56

ナビゲーション バーの下部にある「水平」線は、単純に shadowImage です。空の を適用することで簡単に削除できますUIImage。ドキュメントによると、カスタムの背景画像も設定する必要があります。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Set the background and shadow image to get rid of the line.
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
}
于 2013-10-09T18:11:55.843 に答える
21

CaptJakが指摘したように、私は本当にそうすべきではありませんが、立ち往生している他の人のために:

for (UIView *view in self.navigationController.navigationBar.subviews) {
    for (UIView *view2 in view.subviews) {
        if ([view2 isKindOfClass:[UIImageView class]]) {
            [view2 removeFromSuperview];
        }
    }
}

ここに画像の説明を入力

于 2013-08-12T05:50:24.973 に答える
0

iOS7のナビゲーションバーから1pxの線と影を削除したいという同様の問題がありました。私の場合、ナビゲーション バーの下部に 3 ポイントの太い緑色の線が必要でした。

サブビューのトラバースを伴わない、ナビゲーション バーの下部にある 1px 行を取り除く解決策があるかどうかはわかりませんが、次のようにその行を非表示にするビューを追加する方法があります (少なくとも線の色はそのように変更できます)。

UIView * bgView = [[UIView alloc] initWithFrame:CGRectMake(0, navBarHeight, navBarWidth, 1)]; // Dont use magic numbers in your code
bgView.backgroundColor = //some other color
[navigationBar addSubview:bgView];
[navigationBar setShadowImage:nil];
于 2014-03-10T17:21:39.707 に答える
0

アプリが iOS 6.0 以降のみをサポートしている場合は、次の行を追加するだけです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
...
}
于 2013-11-18T16:25:55.660 に答える