iOS7でぼかし

iOSの7番目のバージョンでは、多くのUI要素がより魅力的に見え始めました( セッション226iOSでのエンゲージメントUIの実装 」を参照)。



たとえば、ポップオーバー、ほとんどのバーとアラートの背景がぼやけています。







コントロールにブルーを追加する場合の対処方法については、この記事で説明します。





ぼかしが違います



ブルーには、静的と動的の2種類があります。 名前が示すように、最初はコンテンツを1回ぼかし、2番目は短い間隔で更新されます。



ブルーラーを実現することは難しくありません。 一般的なスキームは次のとおりです。ビューの背後に背景画像を撮影し(たとえば、 renderInContextを使用して)、ぼかして、結果の画像を背景ビューとして設定します。 ダイナミックブルーの場合、上記のすべてのアクションはタイマーで実行されます。 このアプローチの例として、 FXBlurViewを参照することをお勧めします



7-kiの青味の主な利点は高速です。 たとえば、ビデオを見ることができ、同時にボリュームコントロールを備えたパネルは遅延なくリアルタイムでbluetoothになります。



そのため、iOS 7で高速ブルーを実装する方法。



レイヤーの盗難



アイデアは非常に簡単です。 UIToolbarには透明性があるため、そのレイヤーを背景として使用できます。



UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:[self bounds]]]; [toolbar setBarTintColor:[UIColor greenColor]]; [self.layer insertSublayer:[self.toolbar layer] atIndex:0];
      
      





アプローチは優れており、安定して動作し、非常にシンプルです。

iOS-blur (CocoaPodsから入手可能)と呼ばれる既製の実装が既にあります。



drawViewHierarchyInRectの使用:afterScreenUpdates



タスクがトリッキーなブルーを作成することである場合は、自分で背景を取り、それをぼかす必要があります。

幸いなことに、iOS 7はスナップショットを作成するための非常に高速な方法を導入しましたView drawViewHierarchyInRect:afterScreenUpdates





プレゼンテーションの写真を見ると、ビューのスナップショットを取得する速度が15倍になっていることがわかります。



使用は非常に簡単です( 既成の実装 ):



 -(UIImage *)blurredSnapshot { UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, self.window.screen.scale); [self drawViewHierarchyInRect:self.frame afterScreenUpdates:NO]; UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); UIImage *blurredSnapshotImage = [snapshotImage applyLightEffect]; UIGraphicsEndImageContext(); return blurredSnapshotImage; }
      
      





この例では、WWDCから取得され、 Accelerateフレームワークのパワーを使用するカテゴリUIImage + ImageEffectsがbluerに使用されます。 もちろん、ブラブやその他のことはできます。 たとえば、 JMIBlurViewで行われるCIFilterまたはそのプライベート実装。 主なアイデアは、7秒からrenderInContextを使用するよう説得することです。renderInContextは 、ほぼ1秒間実行され、シェーダーを使用せずにリアルタイムの青みを実現します。



ダイナミックブルーの実装の例として、 7blurを参照することをお勧めします



おわりに



iOS7でのぼかしは非常に高速で実装が簡単です。 パフォーマンスを失うことを恐れずに、アプリケーションで自由に使用してください。



All Articles