このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第81回

裏技的なカスタマイズも紹介

アラートコントローラーの基本的な使い方

2018年04月04日 18時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 前々回と前回は、iOS本体の通知センターやコントロールセンターにも使われている、曇りガラスのようなフィルター効果を持った視覚効果ビューを扱いました。これは、それまでに見ていたビューをぼかしながら、その上に別の情報を重ねて表示する際の、iOSの標準的なユーザーインターフェースのパターンを支える基礎技術となっているものです。

 今回は、特に視覚効果ビューを名指しで使うことなく、自動的に視覚効果ビューが得られる、標準的なユーザーインターフェース機能を取り上げます。それは、いわゆるアラート(ダイアログボックス)を表示するアラートコントローラー(UIAlertController)です。これは、実は以前(テーブルビューを取り上げた際)にも使ったことがあります。そのときは背景のビューがほとんど無地だったため、そこに視覚効果が付いていることには気付きにくかったはずです。今回は、視覚効果をはっきり確認するため、いつものように週アスの表紙写真の上にアラートを表示してみます。

 以前には、アラートの基本的な使い方についてはあまり詳しく説明していませんでした。今回は改めてアクションと呼ばれるボタンを追加する方法、それがタップされた際の対処方法なども取り上げます。さらに、アラートの見栄えをカスタマイズする裏技的な方法もふたとおり紹介しましょう。

画面の長押しで、基本的なアラートを表示する

 今回も表紙画像を表示するイメージビューを用意し、その上にジェスチャーレコグナイザーを設定します。ユーザーがそのジェスチャーを発動させると、アラートコントローラーによるアラートを表示する、というわけです。視覚効果ビューがアラートに置き換わっただけで、基本的な動作、構成は前回のプログラムと大きくは変わりません。

 まずはボタンが1つだけの、単純なアラートを表示するプログラムとしました。前半部分を見てみましょう。

今回のプログラムも基本的なかたちは前回までのものと似ています。ビューコントローラーのviewDidLoadメソッドの中では、イメージビューを用意して表紙画像を表示し、そのイメージビューに長押しのジェスチャーレコグナイザーを設定しています

 ビューコントローラーのviewDidLoadメソッドの中でイメージビューをセットアップし、今回は長押しのジェスチャーレコグナイザー(UILongPressGestureRecognizer)を設定しています。長押しの最小検出時間は0.8秒としました。

 後半部分は、そのジェスチャーを検出した際に呼ばれるメソッドの記述と、いつものようにビューコントローラーのオブジェクトを作って、それをプレイグラウンドのライブビューに設定するコードだけです。

長押しジェスチャーを検出すると呼び出されるメソッドの中では、UIAlertControllerクラスのオブジェクトを作成し、そこにUIAlertActionクラスのオブジェクトを1つ加えてから、ビューコントローラーのpresentメソッドを使って、そのボタンが1つのアラートを画面に表示します

 アラートは、UIAlertControllerクラスのオブジェクトとして作成します。そこにUIAlertActionクラスのオブジェクトとして作成したボタンを追加することで、必要なアラートの構成要素を整えます。作成したアラートは、ビューコントローラーが持つメソッド、presentによって画面に表示しています。

 このプログラムを実行して画面を0.8秒以上長押しすると、「アラート」というというタイトルで「曇りガラス効果のアラート」というメッセージがを含み、「確認」ボタンが1つあるアラートが表示されます。

画面の中央に表示されたアラートには、何も設定しなくても前回にも登場した視覚効果ビューと同様の、半透明の曇りガラスのような効果が付いています。この効果は、下のビューが写真のように色の変化がある表示でないと、認識しづらいでしょう

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!