19

Facebookがぼやけたツールバーに何を使用しているか知っている人はいますか?

ここに画像の説明を入力

さて、iOS 7 のぼかしに関するスレッドがすでに無数にあることを私は知っています。それらはすべて、次の同じソリューションになります。

  1. 半透明を YES に設定して UIToolbar を使用し、その barTintColor プロパティを設定します。このアプローチの問題点は、色の明るさが大幅に増加することです。これは、AMBlurViewが使用するアプローチです。Facebook アプリのナビゲーション バーは、白いコンテンツの上にある場合でも濃い青色のままです。(AMBlurViewだとパステルブルーになります)
  2. 基礎となるビューをグラフィック コンテキストでレンダリングし、そのコンテキストをぼかし、UIImage として出力し、それを背景ビューとして使用し、1 秒あたり 30 回繰り返します。(これはパフォーマンスにかなりの悪影響を及ぼします)。これは、FXBlurViewが使用するアプローチです。Facebookもそれを使用しているようには見えません。

Apple Dev Forums を詳しく読んだことがありますが、これは Apple エンジニアにとっても技術的な課題のようです。Facebook は、私が説明した 2 つのアプローチ以外の方法でリアルタイムのぼかしを釘付けにしています。何か案が?

4

2 に答える 2

21

どうやらここでのトリックは、半透明のレイヤーをナビゲーション バーのサブレイヤーとして挿入することです。私はこれを見つけたことを信用しません。次のスニペットは、この要点から抜粋したものです。

UIColor *barColour = [UIColor colorWithRed:0.13f green:0.14f blue:0.15f alpha:1.00f];

UIView *colourView = [[UIView alloc] initWithFrame:CGRectMake(0.f, -20.f, 320.f, 64.f)];
colourView.opaque = NO;
colourView.alpha = .7f;
colourView.backgroundColor = barColour;

self.navigationBar.barTintColor = barColour;

[self.navigationBar.layer insertSublayer:colourView.layer atIndex:1];
于 2013-09-22T01:17:59.247 に答える
0

上記の回答に次の行を追加しない限り、目的の結果を得ることができませんでした。

 [self.navigationBar setBackgroundImage:[UIImage new]
                             forBarMetrics:UIBarMetricsDefault];
    self.navigationBar.shadowImage = [UIImage new];
    self.navigationBar.translucent = YES;

ここに完全なコードがあります

[self.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;

UIColor *barColour = [UIColor colorWithRed:0.13f green:0.14f blue:0.15f alpha:1.00f];
UIView *colourView = [[UIView alloc] initWithFrame:CGRectMake(0.f, -20.f, 320.f, 64.f)];
colourView.opaque = NO;
colourView.alpha = .7f;
colourView.backgroundColor = barColour;

self.navigationBar.barTintColor = barColour;

[self.navigationBar.layer insertSublayer:colourView.layer atIndex:1];
于 2013-09-25T06:29:26.133 に答える