iOS 7 半透明のモーダルビューコントローラー
2023-08-04 14:54:28
質問
iOS 7 の App Store アプリでは、後ろの景色が見えるすりガラスタイプのエフェクトを使用しています。これは、iOS 7 に組み込まれた API を使用しているのか、それともカスタム コードなのでしょうか。前者であることを期待していましたが、ドキュメントに明らかな参照は見当たりません。モーダル ビューにアルファ プロパティを設定するような)明白なことは、何の効果もないようです。
例を見るには、App Store アプリを開き、右上のボタンを押します。
どのように解決するのですか?
iOS 8.0のリリースにより、画像を取得してぼかすという作業が不要になりました。というのも アンドリュー・プラマー が指摘しているように UIVisualEffectView と UIBlurEffect .
UIViewController * contributeViewController = [[UIViewController alloc] init];
UIBlurEffect * blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *beView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
beView.frame = self.view.bounds;
contributeViewController.view.frame = self.view.bounds;
contributeViewController.view.backgroundColor = [UIColor clearColor];
[contributeViewController.view insertSubview:beView atIndex:0];
contributeViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:contributeViewController animated:YES completion:nil];
iOS 8以前で動作するソリューション
rckoenesさんの回答に補足します。
強調されているように、次のようにしてこの効果を生み出すことができます。
- 基礎となる UIView を UIImage に変換する。
- UIImage をぼかす
- UIImageをビューの背景として設定する。
多くの作業のように聞こえますが、実際にはかなり単純に行われます。
1. UIViewのカテゴリを作成し、以下のメソッドを追加します。
-(UIImage *)convertViewToImage
{
UIGraphicsBeginImageContext(self.bounds.size);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
2. 現在のビューの画像を作り、それをぼかすために アップルの「画像効果」カテゴリ ( ダウンロード )
UIImage* imageOfUnderlyingView = [self.view convertViewToImage];
imageOfUnderlyingView = [imageOfUnderlyingView applyBlurWithRadius:20
tintColor:[UIColor colorWithWhite:1.0 alpha:0.2]
saturationDeltaFactor:1.3
maskImage:nil];
3. オーバーレイの背景として設定します。
-(void)viewDidLoad
{
self.view.backgroundColor = [UIColor clearColor];
UIImageView* backView = [[UIImageView alloc] initWithFrame:self.view.frame];
backView.image = imageOfUnderlyingView;
backView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
[self.view addSubview:backView];
}
関連
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
-
[解決済み】iPhoneアプリでiOS 7のステータスバーをiOS 6のデフォルトスタイルに戻す?
-
[解決済み】iOS 7: UITableViewがステータスバーの下に表示される
-
[解決済み] iOS 7の半透明なUINavigationBarで明るく鮮やかな色を実現するために
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される