Ios-development-with-swift2-quick-guide

提供:Dev Guides
移動先:案内検索

Swift 2を使用したiOS開発-Xcode IDE

iOSアプリケーションを開発するには、MacBook Pro、Mac MiniなどのAppleデバイス、またはOS Xオペレーティングシステムを搭載したAppleデバイスが必要です。

Xcodeについて

*Xcode* は、iOS/OS Xアプリケーション開発用にアップルが提供するデフォルトのIDE(統合開発環境)です。 iOS、OS X、Watch OS、TV OSアプリケーションなどの開発に必要なすべてを含むIDEです。

Xcodeを実行するには、持っている必要があります-

  • OS X、つまりAppleの公式オペレーティングシステムを実行しているMacデバイス。
  • Apple ID(無料):IDEをダウンロードします。

インストール

Xcodeをデバイスにインストールするには、次の手順に従います。 既にインストールしている場合はスキップします。

  • App Storeに移動し、まだログインしていない場合はログインし、Xcodeを検索します。 [取得してインストール]をクリックします。
  • ダウンロードしたら、「アプリケーション」または「ランチパッド」に移動して、アプリケーションを実行します。
  • 最初の実行時に、追加のダウンロードを要求し、すべてをダウンロードさせ、要求があればパスワードを入力します。

Xcode

iOS Development Swift 2-最初のアプリケーション

このチュートリアルでは、iOS開発の基本的な概念をいくつか学習します。

  • 新しいプロジェクトを作成する
  • IDEの機能
  • IDEをナビゲートする
  • ビューにラベルを追加する
  • アプリケーションを実行する
  • 快適さに応じてシミュレーターを調整する

初心者の場合、このチュートリアルは非常に役立ちます。

新しいXcodeプロジェクトの作成

新しいXcodeプロジェクトを作成するには、以下の手順に従う必要があります。

ステップ1 *-ラウンチパッドのXcodeアイコンをクリックし、[*新しいXcodeプロジェクトの作成]を選択します。

新しいプロジェクト

  • ステップ2 *-iOSを選択し、シングルビューアプリケーションを選択して、次へをクリックします。

シングルビュー

  • ステップ3 *-表示される後続の画面には、入力するフィールドがいくつかあります。 以下のポイントでは、これらの各フィールドに入力する方法について説明します。
  • プロジェクト名を入力します-プロジェクトに似た名前にすることができます。
  • 現時点では、チームフィールドは空のままにしておくことができます。 チームでアプリケーションを作成するときに使用されます。
  • 組織名は、組織の名前です。個人のプロジェクトの場合は、任意の名前を付けることができます。 アプリストアでアプリを公開するまでは関係ありません。
  • 識別子は通常、アプリケーションの一意の識別子であり、アプリストアの他のアプリと一致してはなりません(アプリストアにアプリをアップロードする場合のみ)。
  • 言語はSwiftになり、デバイスはユニバーサルになり、他のすべてのオプションは今のところチェックされません。

すべての詳細を入力したら、[次へ]ボタンをクリックします。

次へボタン

  • ステップ4 *-プロジェクトを保存する場所を選択します。 今は必要ないので、「Gitリポジトリの作成」チェックボックスのチェックを外します。 作成をクリックします。

おめでとうございます。 プロジェクトが作成されました。

Xcode環境を介したナビゲーション

ナビゲーターパネル内の Main.storyboard オプションをクリックします。 これにより、メインビューが表示され、アプリケーションの実行時に表示されます。

パネル

ラベルを追加する

画面の右下隅に検索バーがあります。 その検索バーにラベルを入力し、Returnキーを押します。

  • ラベルを検索した後、ラベルをメインビューにドラッグアンドドロップします。 ラベルテキストをダブルクリックし、「Hello World」と入力します。
  • ラベルをビューの中央にドラッグします。ラベルが正確に中央にくると、中央で交差する2本の線が表示されます。

これで、ビューは次のスクリーンショットのようになります。

ラベルの追加

アプリケーションを実行する

デバイスを選択し、右上隅の[再生]ボタンをクリックします。

Hello World

これが、iPhone 7シミュレーターで実行される最終アプリケーションです。

最終アプリケーション

シミュレーターのプロパティの調整

アプリケーションを初めて実行するとき、シミュレーターの画面がデスクトップまたはラップトップの画面に合わない場合があります。 そのため、シミュレータがフォアグラウンドで実行されている間に、ウィンドウ→スケールをクリックし、ディスプレイに適したシミュレータ画面サイズの割合を選択します。

ウィンドウスケール

このチュートリアルで使用するシミュレーターの機能については、引き続き説明します。

これが最初のアプリケーションであり、正常に完了しました。 乾杯!

アプリをインタラクティブにする

この章では、iOSがユーザーとの対話に提供するいくつかの新しいものとUI機能を紹介します。 私たちは追加されます-

  • テキストフィールド
  • ラベル
  • ボタンとそのアクション

さらに、動的ラベルのコードを迅速に記述し、ユーザーが入力した入力の計算結果を表示します。

「アプリをインタラクティブにする」というタイトルは、アプリケーションをユーザーと対話させることを意味します。 そのため、ここではユーザーがアプリケーションを操作および制御できるようにします。

テキストフィールドを追加する

ここで、再び新しいプロジェクトを作成します。 Xcodeで新しいプロジェクトを作成する方法について既に説明したように、簡単に管理できるはずです。

さて、「My Dog’s Age」という新しいプロジェクトを作成します。このプロジェクトを作成したら、「Main.storyboard」ファイルをクリックして、以下の手順に従います。

  • ユーティリティペインの検索バー(Xcodeの右下隅にあります)で、ラベルを検索します。 そのラベルをクリックして、main.storyboard/(表示)にドラッグします。 次に、ラベルをダブルクリックして、名前を「My Dog’s Age」に変更します。
  • 「テキストフィールド」を検索し、そのテキストフィールドをクリックしてビューにドラッグします。 このテキストフィールドが選択されている間に、属性インスペクターに移動し、キーボードタイプを数字パッドに変更して、下のスクリーンショットに示すように数字のみを入力できるようにします。

数字パッド

ビューにボタンを追加する

検索バーでボタンを検索します。 それをビューにドラッグし、ダブルクリックして、名前を「Calculate」に変更します。

ビューにラベルを追加する

ラベルを検索し、ボタンの下に追加して、年齢の出力を表示します。 ダブルクリックしてラベルを空にし、少し広げて、完全な出力が見えるようにします。

ヒント-ダブルクリックで名前を変更できない場合は、アイテムを選択し、ユーティリティペインで-属性インスペクター、そのアイテムのタイトルがあり、そこに変更して、次のスクリーンショットに示すようにReturnキーを押します。

計算

これで、Main.storyboardは次のスクリーンショットのようになります。

メインストーリーボード

ここで終わりではありません。今、main.storyboardに画像を追加する方法について説明します。

ビューに画像を追加する

まず、プロジェクトに追加する画像を検索する必要があります。 以下の画像をダウンロードできます-

画像のダウンロード

この画像をプロジェクトにコピーするか、この画像をプロジェクトにドラッグすると、次のウィンドウが表示されます。

オプションを選択

必ず選択し、必要に応じてアイテムをコピーし、グループを作成してください。 [完了]ボタンをクリックします。

次に、ユーティリティペイン→オブジェクトライブラリに移動し、画像ビューを検索します。 画像ビューをビューにドラッグします。 これで、ビューは次のスクリーンショットのようになります。

最終ビュー

次に、この画像ビューをクリックして、ビューにドラッグするだけで、ユーティリティ領域に画像を選択するための「画像」という名前のオプションがあることがわかります。 その矢印をクリックすると、利用可能なすべての画像が表示されます。 この新しく追加された画像ビューを選択したことを確認してください。

画像ビュー

画像ビューの画像を選択したので、最終的なビューは次のスクリーンショットのようになります。 これが、このアプリケーションのmain.storyboardで行う唯一のことです。

これは、すべてのUI要素を追加した後のビューです。

UI要素

この後、コードの論理的な実装があり、このステップまで完了すると続行します。

次に、右上隅にあるアシスタントエディターボタンをクリックして、View Controllerを選択し、アシスタントエディターを開きます(下のスクリーンショットを参照)。

アシスタントエディターボタン

これで、ビューは次のスクリーンショットのようになります。

view.jpg

アプリケーションに機能を追加する

これまで、私たちのアプリケーションは単なる静的アプリケーションであり、何にも応答せず、ユーザーとの対話で変化しません。

UI要素をコードに接続する主要な部分が登場し、ユーザーの入力に応じてUIが変更されます。 *“ ViewController.swift” *ファイルは、現在のビューのコードを記述するメインファイルです。

-現在、単一のビューを使用していますが、後で複数のビューについて説明します。 さまざまなファイルがさまざまなビューを制御する方法について説明します。

テキストフィールドをクリックし、Ctrlキーを押しながらカーソルを画面の2番目の部分にドラッグします。 viewcontroller.swiftファイル。 ビューと迅速なファイルを結ぶ青い線が表示されます。 マウスを放すと、入力を求めるポップアップが表示されます。

入力年齢

ヒント-入力フィールドに似た名前を名前フィールドに入力します。 重要な点の1つは、名前にスペースを含めることはできないため、前のイメージに示すように名前を書くことができることです 名前に複数の単語がある場合、最初の単語は小文字で記述する必要があり、次のすべての単語の最初のアルファベットは大文字になります。

同じ手順に従い、残りの要素を接続します。 テキストフィールドとラベルのタイプはOutletであることに注意してください。 ただし、ボタンを追加する際、タイプは以下のスクリーンショットに示すようにアクションでなければなりません。

CalculatePressed

この段階で、viewcontroller.swiftは次のようになります-

ViewControllerSwift

さて、あなたのボタンアクションの中に、次の行を追加します-

var age = Int(enteredAge.text!)! * 8
yearsLabel.text = String(age);

ヒント-swiftで行を終了するためにセミコロンを追加する必要はありませんが、セミコロンを挿入しても、コンパイラはエラーを報告しません

上記のコードでは、最初の行で変数「年齢」を宣言しています。これについては次の章で説明します。 次に、ユーザーが入力した値を整数に変換し、8を掛けて割り当てます。

2行目では、出力ラベルに「年齢」の値を割り当てます。 この段階で、View Controllerは次のようになります-

年齢の値を割り当てる

次に、アプリケーションを実行します。これが表示されます。

アプリケーションの実行

ヒント-最初の実行時にキーボードが表示されない場合は、シミュレーターを開き、ハードウェアをクリックしてキーボードに移動し、ソフトウェアキーボードの切り替えをクリックします。

次の章では、 Playground という新しいツールについて説明します。 また、変数、辞書、配列ループ、クラス、オブジェクトなど、より迅速な概念も学習します。

Swift 2を使用したiOS開発-プレイグラウンド

この章では、迅速なコードを記述して実行できる新しい環境を紹介します。 また、迅速な遊び場の次の側面をカバーします-

  • 変数
  • 辞書
  • 配列
  • ループ
  • クラスとオブジェクト

注意-このチュートリアルで使用するこれらの基本的な概念のみを確認します。迅速に深く学習したい場合は、リンク:/swift/index [Swift Tutorial]を確認してください。

Playgroundは、迅速なコードを実行するためにXcodeで提供されるツールです。 新しい遊び場を作成することから始めます。

Swift Playgroundの開始

迅速な遊び場を作成するには、Xcodeアイコンをクリックし、最初のオプションを選択して、迅速な遊び場を開始します。

支払い開始

プレイグラウンドに名前を付け、iOSとしてPlatformを選択します。 プレイグラウンドをDemo Playgroundと名付けましょう。 次へをクリックします。

Name Platform

これらは、プレイグラウンドを作成するために従う必要がある唯一の手順です。 次のスクリーンショットは、プレイグラウンドを示しています。

デモプレイグラウンド

Sr.No Basic Concepts & Description
1

Variables

変数は、プログラムがデータを保存および操作するために使用できるメモリ/ストレージです。 各変数には特定のデータ型があり、変数がメモリで占有するサイズを決定します。

2

Dictionaries

辞書とは、キーと値のペアで値を保存するコレクションです。 辞書に保存されているデータは、各値がキーに関連付けられているメソッドに保存されます。 ここで、すべてのキーは一意であり、同じ辞書に2回表示することはできません。

3

Arrays

配列は、同じ種類のデータを順序付きリストに格納するデータ型です。 配列内の複数のインデックス/場所に同じ値が表示される場合があります。

4

Loops (Control Flow)

Swiftはさまざまな制御フローステートメントを提供します。 ループは通常、条件またはステートメントをそのループからの条件/プログラマーのニーズが満たされるまで複数回繰り返すために使用されます。

5

Classes and Objects

クラスは、プログラムのコードの構成要素である汎用の柔軟な構成体です。

オブジェクトとは、一般にクラスのインスタンスを指すために使用される用語であるため、オブジェクトの代わりにインスタンスと呼ぶことができます。

Swiftでアプリケーションを作成する

この章では、Swiftを使用して2つの新しいアプリケーションを作成します。

最初のアプリケーション-「数字を推測する」

このセクションでは、「Guess the number」というアプリケーションを作成します。 このアプリケーションを作成するには、新しいiOSシングルビューアプリケーションを作成し、任意の名前を付けます。

*main.storyboard* をクリックして、メインビューを選択します。
  • テキストラベルを追加→テキストを「数字を推測」に変更します。 色、サイズのプロパティを変更し、要件に合わせて作成します。
  • 入力フィールドを追加し、全体表示に拡大します。
  • ボタンを追加して、「Guess。
  • ラベルをもう1つ追加して引き伸ばし、テキストボックスをクリアします。

これは、すべての要素を追加した後の view の外観です。

推測番号

アシスタントエディターに切り替え、UI要素からドラッグをクリックしてコントローラーファイルを表示し、テキストフィールドをアウトレットとして接続し、userInputという名前を付けます。 同様に

  • 空のラベルをアウトレットとして接続し、resultLabelという名前を付けます。
  • Guessボタンをアクションとして接続し、guessButtonPressedという名前を付けます。

論理は何ですか?

ロジックは単純です。0〜9の乱数を生成し、ユーザーが入力した数と等しいかどうかを確認します。 等しい場合、「あなたは正しい」と表示され、そうでない場合、「あなたは間違っています!」と表示されます。

ロジックを適用する

0〜9の乱数を生成するには、次のコマンドを使用します。

let rollIt = String(arc4random_uniform(10))

次に、次のロジックを使用して、ユーザー入力と同じかどうかを確認します。

if userInput.text == rollIt {
   resultLabel.text = "You're right!"
} else {
   resultLabel.text = "Wrong! It was a " + rollIt + "."
}

これが、ボタンアクション関数の最終的なロジックの外観です。

@IBAction func guessButtonPressed(_ sender: Any) {
   let rollIt = String(arc4random_uniform(10))
   if userInput.text == rollIt {
      resultLabel.text = "You're right!"
   } else {
      resultLabel.text = "Wrong! It was a " + rollIt + "."
   }
}

これで、最終的なアプリケーションは次のようになります。

ロジックの適用

アプリケーションを実行して、 output を確認しましょう。 オープニング画面は次のようになります-

出力

次に、 input 領域に数値を入力します。

入力

別の番号を入力して、その出力を確認しましょう-

別の番号をフィード

もう1つのアプリケーションを完了しました。 このアプリケーションを実行して、さまざまな入力を入力してください。

2番目のアプリケーション-「Is It Prime」

このアプリケーションでは、ユーザーからの入力を取得し、その数が素数であるかどうかを確認します-

  • レイアウト-前のアプリケーションと同様に、入力、ボタン、出力ラベルが必要です。
  • 課題-UIを作成し、要素をコードに接続します。 また、完全なプロジェクトを自分で作成できる場合も試してください。 あなたが自分でそれを作成することができたなら、それは素晴らしいことであり、あなたはiOS開発で素晴らしいことをしている。

あなたが管理できなかった場合、心配しないでください。 次の画像を見て、同じことを試してください。

Is It Prime

このようなビューを作成してみてください。まだ実行できない場合は、ゲスゲームを開発した前のセクションをお読みください。

ロジックとは何ですか?

素数は、1以外の数字と数字自体で割ることができない数字です。

-7は素数で、1と7を除く他の数字は除算できません。

実装方法

素数をチェックするためのコードを書いてみてください。 次に、ユーザー入力を取得し、それが素数であるかどうかを確認します。 はいの場合、素数を表示します。それ以外の場合、結果ラベルに素数を表示しません。

ここに提供された番号が「素数」であるかどうかをチェックするコードがあります-

@IBAction func isItPrimeButtonPressed(_ sender: Any) {
   if let userEnteredString = userInput.text {
      let userEnteredInteger = Int(userEnteredString)
      if let number = userEnteredInteger {
         var isPrime = true
         if number == 1 {
            isPrime = false
         }
         var i = 2
         while i < number {
            if number % i == 0 {
               isPrime = false
            }
            i += 1
         }

         if isPrime {
            resultLabel.text = "yes. \(number) is prime!"
         } else {
            resultLabel.text = "No. \(number) is not prime"
         }
      } else {
         resultLabel.text = "Please enter a positive whole number"
      }
   }
}

これが、ボタンアクションの外観です。 以下は、最終的なコードとビューの画像です-

最終コード

これは、手順に従った場合の実行中のアプリケーションの外観です。

実行中のアプリケーション

さて、入力値を指定してアプリケーションをテストしましょう-

テストアプリケーション

Swift2によるiOS開発-高度なiOS

この章では、アプリケーションでの複数のビューの作成、ナビゲーションバーの追加、テーブルビューの追加、アプリケーションへのデータの保存、Webアプリケーションの作成などの高度な機能について説明します。

この章にはアプリケーションの開発に必要なもののほとんどが含まれているため、すべてのセクションを注意深く読んでください。

マルチビューコントローラー

以前のアプリケーションでは、単一のビュー/View Controllerのみを提供していました。 ただし、アプリケーションに複数のビューを含めることができ、それらのビューを個別に実行できます。

したがって、新しいプロジェクトを作成することから始めます。このプロジェクトの名前には複数のビューがあります。 他のすべてのプロジェクトと同様に、このプロジェクトにもView Controllerとそのコントローラー用のSwiftファイルがあります。 (これは、ビューを選択し、Identity Inspectorでそのプロパティを表示することで確認できます。)

次のスクリーンショットは、現在のビューがどのように見えるかを示しています-

エントリポイント

右側(Identityインスペクター)に、View Controllerに関連するクラスが表示されます。 左側のこの矢印は、エントリポイントです。 これは、アプリケーションの実行開始後に表示されるアプリケーションの最初のビューです。

2番目のMultiple View Controllerの追加

アプリケーションに他のView Controllerを追加するには、オブジェクトライブラリでView Controllerを検索します。 見つかったら、View Controllerをmain.stroryboardのほかのビューのすぐ外側にドラッグします。

2番目の複数View Controller

これは、アプリケーションの外観です。 これで、View Controllerが追加されましたが、新しく追加されたビューのView Controllerクラスも作成する必要があります。

  • プロジェクトを右クリック→新しいファイル→cocoa Touch Class→*好きな名前を付けて、「SecondViewController」という名前を付けます。

これは、View Controllerのクラスファイルを作成する方法です。 ここで、「main.storyboard」に戻り、2番目のView Controllerをクリックして、Identity Inspectorを確認します。

クラスフィールドは現在空である必要があるため、そのフィールドをクリックして、最後の手順で追加したクラス名の入力を開始します。 表示されたら、Enterをクリックします。

2番目のView Controller

これで、複数のView Controllerを作成し、そのViewのコントローラークラスファイルを追加しました。 ただし、アプリケーションを実行すると、2番目のビューはまだ表示されません。 Why?

関数を追加していないため、そのビューに移動できます。 つまり、アプリケーションにナビゲーションをまだ追加していません。 心配しないでください;次のセクションで説明します。

アプリケーションへのナビゲーションの追加

あるビューから別のビューへの遷移のプロセスは、セグエ*と呼ばれます。 2つのビューの間にセグエを作成して行います。 これを行うには、最初のView Controllerにボタンを追加し、そこから2番目のビューへのドラッグを制御します。 ボタンを離すと、下のスクリーンショットに示すようにいくつかのオプションが表示されます。

アプリケーションへのナビゲーションの追加

アクションセグエから「表示」オプションを選択します。 アプリケーションを実行すると、ボタンをクリックすると、2番目のビューが表示されます(2番目のビューに何かをより明確に追加して、識別できるようにします)。

ただし、最初のビューに戻ることはできません。 そのために、 Navigation controller があります。

Navigation Controllerの追加

最初のView Controllerを選択し、トップバーで、*エディター→埋め込み→ナビゲーションコントローラー*をクリックします。

編集

これで、アプリケーションは次のスクリーンショットのようになります。

スクリーンショット

ビューの上部に小さな明るい灰色の行があることを確認する必要があります。 これで、アプリケーションを実行すると、ビューの上部にナビゲーションバーがあることがわかります。 ボタンをクリックすると、2番目のビューに移動し、そのナビゲーションバーに戻るボタンが表示されます。 これをクリックすると、初期ビューに戻ります。

ナビゲーションバーにタイトルと戻るボタンを追加する

ナビゲーションバーにタイトルを追加するには、ナビゲーションバーをクリックして、属性インスペクターを表示します。 そこに我々は表示されます-

タイトル戻るボタン

  • タイトル-これは、中央に表示されるナビゲーションバーのタイトルになります。
  • プロンプト-これは中央のタイトルバーの上部に表示されます。
  • 戻るボタン-ここでは、戻るボタンに表示されるテキストを変更できます。

現在、ビューを通過しているボタンはビューにあります。これは、画面に他の何かを表示したい場合には適さない可能性があります。 したがって、ナビゲーションバーにBar Buttonアイテムを追加し、2番目のビューに移動します。 ただし、このためには、最初に追加した最後のボタンを削除する必要があります。

バーボタンアイテムの追加

オブジェクトライブラリでバーボタンアイテムを検索し、ナビゲーションバーの右側にドロップをドラッグします。 「次へ」という名前を付け、そこから2番目のビューへのドラッグを制御し、追加した最後のボタンで行ったように「表示」を選択します。

バーボタンの追加

アプリケーションを実行すると、見た目がすっきりと良くなります。 これが、ナビゲーションで今行うことのすべてです。 後続の章では、必要に応じて、Swiftコードを使用してナビゲーションバーを変更します。

テーブルビュー

テーブルは、複数の行を含む単一の列リストとしてデータを表示します。これはさらにセクションに分割できます。 テーブルを使用して、クリーンで効率的な方法でデータを表示する必要があります。

このセクションでは、テーブルビューの追加、プロトタイプセルの追加、テーブルビューのデータソースとデリゲートの追加、テーブルのプロパティの変更、テーブルビューセルの動的データの設定方法を理解します。

テーブルビューの追加

テーブルビューを追加するには、まず新しいプロジェクトを作成し、「tableView」という名前を付けます。 次に、オブジェクトライブラリに移動し、Table Viewを検索します。TableView、Table View Controller、その他の多くのオプションが表示されます。 ただし、テーブルビューを選択してドラッグし、デフォルトビューコントローラーに追加する必要があります。

テーブルビュー

プロトタイプセルの追加

テーブルビューが強調表示されている間に、ビュー全体をカバーするようにテーブルビューを引き伸ばします。 属性インスペクターを確認してください。Prototypecellsというフィールドがあり、現在は0です。 値を1に変更する必要があります。これで、ビューは次のようになります。

プロトタイプセル

セル識別子の変更

次に、ビュー内で、プロトタイプセルをクリックします(少し注意が必要です)。 そのため、ドキュメントアウトラインで、[ビューコントローラー]→[表示]→[テーブルビュー]→[テーブルビューセル]をクリックします。属性インスペクターに[識別子]という列があり、クリックして「セル」という名前を付けます。 上記の手順を理解するには、次のスクリーンショットを参照してください。

テーブルビューセル

デリゲートとデータソースの追加

テーブルビューを動的にするには、動的データを読み込む必要があります。 したがって、そのためのデリゲートとデータソースが必要です。 テーブルのデリゲートとデータソースを作成するには、下のスクリーンショットに示すように、Table ViewからView ControllerまたはView Controllerの上の黄色のボタンまでドラッグを制御します。

デリゲートデータソース

カーソルを放すと、dataSourceとデリゲートの2つのオプションが表示され、それらを1つずつ選択します(いずれかのオプションを選択すると、ポップアップが非表示になり、上記の手順を繰り返して2番目のオプションを追加する必要があります) 。 今、それは次のように見えるはずです-

アウトレット

これが、UI/Main.Storyboardを使用して行うことです。 「ViewController.swift」ファイルに切り替えます。 以下に示すように、viewController.swiftに UITableViewDelegate、UITableViewDataSource を追加します-

テーブルビューデリゲートビューデータソース

ただし、Xcodeはこの行にエラーを表示します。

Xcodeエラー

これは、 UITableView を使用する必要があるメソッドがいくつかあるためです。

これらのメソッドを表示するには、Commandキーを押しながらUITableViewDataSouceをクリックし、「numberOfRowsInSection」、「cellForRowAtIndex」引数を持つ最初の2つのメソッドをコピーし、viewDidLoad()の前にViewController.swiftに貼り付けます。

両方のメソッドからこの行* @ available(iOS 2.0、*)*を削除し、開始と終了の中括弧「\ {}」を追加します。 今、ビューは次のようになります-

Uitableview

Xcodeは両方の関数でエラーを表示している必要があります。 ただし、これらの関数の戻り値の型は追加していないため、心配する必要はありません。

*numberOfRowsInSection* -この関数は、セクションに含まれる行の数を定義します。 そのため、この行をメソッドに追加します。
return 1//This will return only one row.
*cellForRowAt* -このメソッドはすべてのセルのコンテンツを返します。 *indexPath* にはすべてのセルのインデックスが含まれます。 セルを作成し、そのセルに値を割り当てて、最終的にセルを返します。

今、あなたの関数は次のように見えるはずです-

internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return 1;
}
internal func tableView(_ tableView: UITableView,
   cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = UITableViewCell(style:
   UITableViewCellStyle.default, reuseIdentifier: "Cell")
   cell.textLabel?.text = "First Row"
   return cell
}

最初の行では、デフォルトスタイルのセルを作成しています。 reuseIdentifier は、作成したプロトタイプセルの名前です。

*Cell.textLable?.text* -これは、そのセルのタイトルとして表示されるテキストを定義します。

最後に、そこからセルを返します。 今すぐアプリケーションを実行してみてください、それは次のように見えるはずです-

識別子の再利用

タイムテーブルアプリケーション

このアプリケーションでは、最後のプロジェクトを継続し、2(2…10…。)のテーブルを印刷するアプリケーションを作成します。 20).

したがって、このアプリケーションを作成するには、プロジェクトのView Controllerファイルを変更するだけです。

以下に示すように機能を変更します-

internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return 10;
}
internal func tableView(_ tableView: UITableView,
   cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")
}

次に、アプリケーションを実行します。 以下のようになります。

タイムテーブルアプリケーション

さて、テーブルビューを完成させてアプリケーションを作成したので、解決するための簡単な課題があります。

チャレンジ

ユーザーが入力した番号のカウントテーブルを印刷するアプリケーションを作成します。

ヒント-入力を取得し、ボタンを追加します。ボタンを押すと、その数のカウントとともにテーブルがロードされます。 ここでは、テーブルデータをリロードする次の関数も必要です。

tableView.reloadData()

このアプリケーションに関するすべてのトピックを網羅しているため、これはあなたにとっての課題です。そのためのソリューションは提供しません。

卵タイマーアプリケーション

このアプリケーションでは、時間を管理する* Timer()および *Class Constructor の概念を使用します。 コンセプトとコーディングを提供します。 前の章ですべてのUI要素について何度も説明したように、自分でUIを作成する必要があります。 (ただし、まったく新しいもののヒントを提供します)。

最終的なアプリのレイアウトは次のようになります-

卵タイマーアプリケーション

このアプリケーションではどうなりますか?

  • タイトルラベルの開始値は210です。
  • 再生ボタンをクリックすると、値が1秒ごとに減少します。
  • 一時停止をクリックすると、値はそこでのみ停止します。
  • -10をクリックすると、値が10減り、デクリメントが継続します。
  • +10のクリックで、値が10増加し、減少が続くはずです。
  • リセットをクリックすると、値は210になります。
  • 値が0未満になることはありません。

概念

  • クラスTimer()→var timer = Timer()の変数を使用します。
  • 作成したばかりのこのタイマー変数に値を設定します。
  • timer = Timer.scheduledTimer(timeInterval:1、target:self、selector:#selector(ViewController.processTimer)、userInfo:nil、repeats:true)
  • timeInterval→は、使用する時間間隔です。
  • target→は影響を受けるビューコントローラーです。
  • selector→は、このタイマーを使用する関数名です。
  • userInfo→ null and repeats、はい、繰り返したいので、それは本当です。

タイマーの無効化

プログラミングによってタイマーを停止するには、* timer.invalidate()*関数を追加します。

使用した要素-

ナビゲーションバー-ナビゲーションバーに3つの項目を追加しました。

  • バーボタンアイテム、左に1つ、右に1つ。
  • 「Our Egg Timer」という名前のタイトル。

ナビゲーションバー

ツールバー-ツールバーはアプリ画面の下部に表示され、現在のビューまたはそのコンテンツに関連するアクションを実行するためのボタンが含まれています。

ツールバーは半透明で、背景色が付いている場合があります。 人々がそれらを必要とする可能性が低いとき、彼らはしばしば隠れます。

UIの下部に5つの項目があるツールバーを追加しました。

  • -10、リセット、+ 10という名前の3つのバーボタン項目。
  • 2つの柔軟なスペース:バーボタン項目間の柔軟なスペース-

ツールバー

バーボタンアイテムにアイコンを追加する方法は?

バーボタンアイテムを選択します。 バーボタンアイテムをクリックし、属性インスペクターに移動し、[アイテムの選択]をクリックして、表示されるドロップダウンからアイテムを選択します。

アイコンからバーのボタン

同様に、他のすべてのボタンのアイテムを選択し、上記のUIを作成します。 ビューの中央にラベルを追加し、アウトレットとして接続し、名前を- timeLeftLabel にします。

タイマー開始のアクション

以下は、開始タイマーのプログラムです。

@IBAction func startTimerButton(_ sender: Any) {
   if !timerActive {
      timerActive = true
      eggTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:
      #selector(ViewController.processTimer), userInfo: nil, repeats: true)
   }
}

次の関数を作成します-

func stopTimer() {
   timerActive = false
   eggTimer.invalidate()
}

停止機能のアクション

停止機能のプログラムは次のとおりです。

@IBAction func pauseTimerButton(_ sender: Any) {
   stopTimer()
}

時間を減算するアクション

以下は、時間を減算するためのプログラムです。

@IBAction func subtractTime(_ sender: Any) {
   if timeLeft > 10 {
      timeLeft = timeLeft - 10
      timeLeftLabel.text = String(timeLeft)
   }
}

時間をリセットするためのアクション

以下は、時間をリセットするためのプログラムです。

@IBAction func resetTimer(_ sender: Any) {
   timeLeft = 210
   timeLeftLabel.text = String(timeLeft)
}

addTimeのアクション

以下は、時間を追加するためのプログラムです。

@IBAction func addTime(_ sender: Any) {
   timeLeft = timeLeft + 10
   timeLeftLabel.text = String(timeLeft)
}

さて、viewController.swiftは次のようになります-

import UIKit
class ViewController: UIViewController {
   @IBOutlet weak var timeLeftLabel: UILabel!
   var eggTimer = Timer() //Initialize the Timer class.
   var timerActive = false//Prevents multiple timers from firing.
   var timeLeft = 210
   func stopTimer() {
      timerActive = false
      eggTimer.invalidate()
   }

   func processTimer() {
      if timeLeft <= 0 {
         stopTimer()
         return
      }
      timeLeft = timeLeft - 1;
      timeLeftLabel.text = String(timeLeft)
   }

   @IBAction func startTimerButton(_ sender: Any) {
      if !timerActive {
         timerActive = true
         eggTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:
         #selector(ViewController.processTimer), userInfo: nil, repeats: true)
      }
   }

   @IBAction func pauseTimerButton(_ sender: Any) {
      stopTimer()
   }

   @IBAction func subtractTime(_ sender: Any) {
      if timeLeft > 10 {
         timeLeft = timeLeft - 10
         timeLeftLabel.text = String(timeLeft)
      }
   }

   @IBAction func resetTimer(_ sender: Any) {
      timeLeft = 210
      timeLeftLabel.text = String(timeLeft)
   }

   @IBAction func addTime(_ sender: Any) {
      timeLeft = timeLeft + 10
      timeLeftLabel.text = String(timeLeft)
   }

   override func viewDidLoad() {
      super.viewDidLoad()
     //Do any additional setup after loading the view, typically from a nib.
   }
   override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
     //Dispose of any resources that can be recreated
   }
}

これがアプリケーションで行うすべてです。アプリケーションを実行してみてください。正常に実行されるはずです。

ローカルストレージにデータを保存する

ローカルストレージにデータを保存するということは、ローカルデバイスのストレージを使用して、デバイス上のアプリケーションに関連するデータを保存することを意味します。 ローカルストレージにデータを保存するには、 NSUserDefaultCoreData の2つの方法があります。

それらを詳細に理解しましょう。

NSUserDefaults

NSUserDefaultsは、設定、設定、個々の値などの小さなデータを格納するためのものです。 アプリケーションでUserDefaultsを使用するには、次のようにコードを使用してnsuserDefaultsへの参照を作成するだけです。

let defaultValues = NSUserDefaults.standardUserDefaults()

UserDefaultsのデータに値を設定するには、次のコードを使用できます-

defaultValues.setObject("Simplified iOS", forKey: "nameKey")
func setDouble(value: Double, forKey defaultName: String)
func setBool(value: Bool, forKey defaultName: String)
func setObject(value: AnyObject?, forKey defaultName: String)
func setURL(url: NSURL?, forKey defaultName: String)
func setInteger(value: Int, forKey defaultName: String)
func setFloat(value: Float, forKey defaultName: String)

NSUserDefaultsから値を取得するには、次のコードを使用できます。

func boolForKey(defaultName: String) -> Bool
func integerForKey(defaultName: String) -> Int
func floatForKey(defaultName: String) -> Float
func doubleForKey(defaultName: String) -> Double
func objectForKey(defaultName: String) -> AnyObject?
func URLForKey(defaultName: String) -> NSURL?

CoreData

CoreDataは、大規模なデータトランザクションをサポートする永続的なフレームワークです。 CoreDataを使用すると、ユーザーデータを格納するためのリレーショナルエンティティ属性モデルを構築できます。 CoreDataはフレームワークであり、SQLiteバイナリ形式を使用してデータを保存できます。

アプリケーションでCoreDataを使用するには、新しいプロジェクトから開始し、プロジェクトの作成中に「コアデータを使用する」をオンにします。

コアデータを使用してログイン-新しいプロジェクトを作成し、次のスクリーンショットに示すようにCoreDataを使用を選択します。

コアデータを使用

プロジェクトが開くまで続けます。プロジェクトに以前のプロジェクトよりも多くのファイルがあることがわかります。

コアデータ

このファイル CoreData_demo.xcdatamodeld は、ユーザーテーブルを作成してデータを保存するデータベースです。

コンセプト-CoreDataに関することは、アプリを閉じて数か月後に開いても、保存したデータが残っていることです。これは次のアプリケーションで確認します。

次に、コアデータを追加し、コアデータを取得する方法について説明します。

コアデータの追加-CoreDataを追加するには、CoreData_demo.xcdatamodeldファイルをクリックすると、エンティティが空であることがわかります。 [エンティティの追加]ボタンをクリックすると、エンティティが追加されます。エンティティ名をダブルクリックして、好きな名前に変更します。

エンティティの追加

エンティティをクリックすると、属性フィールドが空であることがわかります。 プラス記号をクリックして、エンティティの名前を変更します。 次のフィールドからエンティティのタイプを選択します。

属性

エンティティと1つの属性を追加しました。 AppDelegate.swift に移動すると、CoreDataを選択したために2つの新しい関数が追加されたことがわかります。 追加された2つの機能は次のとおりです-

追加された機能

-先に進む前に、CoreDataをファイルにインポートしてください。

データをコアデータに保存-CoreDataにデータを保存するには、AppDelegateクラスのオブジェクトを作成する必要があります。

let appDelegate = UIApplication.shared.delegate as! AppDelegate

そして、コンテキストオブジェクト

let context = appDelegate.persistentContainer.viewContext

次に、エンティティを呼び出すエンティティオブジェクトを作成する必要があります-

let newValue = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)

作成した属性の値を設定します。

newValue.setValue(textField.text, forKey: "name")

を使用してデータを保存します

context.save();

コアデータからのフェッチ-フェッチ中、上記の2つのステップ(appDelegateとコンテキストの作成)は同じです。 次に、フェッチリクエストを作成します。

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")

結果を保存するオブジェクトを作成します。

let results = try context.fetch(request)

次に、要件に従って結果を確認します。 次のアプリケーションを作成すると、CoreDataの詳細が表示されます。

チャレンジ-ユーザーが名前を入力し、ログインをクリックしてアプリケーションを閉じるアプリケーションを作成してみてください。 次回ユーザーがアプリケーションを開くとき、彼はまだログインする必要があります。 次に、ボタンを追加します-ログアウトし、彼がそれをクリックすると、アプリケーションはユーザー名を再度要求します。

CoreDataを使用したログイン/ログアウト

「ログイン」という単一のビュープロジェクトを作成し、CoreDataの使用を選択します。 CoreData_demo.xcdatamodeldをクリックして、「Users」というエンティティを追加します。 その中に、「名前」という属性を追加します。

main.storyboardに移動し、テキストフィールドとログインボタンを追加します。 その下で、ラベルを追加し、それをダブルクリックしてそのコンテンツを削除します。 次に、ログアウトボタンを追加し、属性インスペクターに移動して、「アルファ」を0に設定します。 今、私たちのビューは次のように見えるはずです-

View Controller Scene

次に、View Controllerファイルに移動し、アシスタントエディターを開いて、UI要素とコントローラーファイル間の接続を作成します。

-ボタンの外観を変更する必要があるため、両方のボタンのアウトレットも作成します。 たとえば、ユーザーがログインしている場合、ログインボタンを非表示にします。ユーザーがログインしていない場合は、ログインを表示し、ログアウトボタンを非表示にします。

CoreDataからのデータの追加と取得について既に説明したように、ここにコードを配置します。

*Try-Catch* -コードで何度もtry-catchブロックを使用していることに気付くでしょう。 try-catchブロックを使用せず、プログラムに何らかの例外またはエラーがある場合、実行が停止するためです。 一方、try catchブロックを使用していてエラーが発生した場合、catchブロックがエラーを処理します。 詳しくは、リンク:/swift/index [Swift Tutorial]をご覧ください。

ログイン/ログアウトアプリケーションのコード

ログイン/ログアウトアプリケーションに使用されるさまざまなコンポーネントとコードを理解しましょう。

ログインボタンアクション-次のコードは、ログインボタンアクションを追加する方法を説明しています。

var isLoggedIn = false
@IBAction func logIn(_ sender: AnyObject) {
   let appDelegate = UIApplication.shared.delegate as! AppDelegate
   let context = appDelegate.persistentContainer.viewContext
   if isLoggedIn {
      let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
      do {
         let results = try context.fetch(request)
         if results.count > 0 {
            for result in results as! [NSManagedObject] {
               result.setValue(textField.text, forKey: "name")
               do {
                  try context.save()
               }
               catch {
                  print("Update username failed")
               }
            }
            label.text = "Hi " + textField.text! + "!"
         }
      }
      catch {
         print("Update failed")
      }
   } else {
      let newValue = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)
      newValue.setValue(textField.text, forKey: "name")
      do {
         try context.save()
         logInButton.setTitle("Update username", for: [])
         label.alpha = 1
         label.text = "Hi " + textField.text! + "!"
         isLoggedIn = true
         logOutButton.alpha = 1
      }
      catch {
         print("Failed to save")
      }
   }
}

ログアウトボタンアクション-次のコードは、ログアウトボタンアクションを追加する方法を説明しています。

@IBAction func logOut(_ sender: AnyObject) {
   let appDelegate = UIApplication.shared.delegate as! AppDelegate
   let context = appDelegate.persistentContainer.viewContext
   let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
   do {
      let results = try context.fetch(request)
      if results.count > 0 {
         for result in results as! [NSManagedObject] {
            context.delete(result)
            do {
               try context.save()
            } catch {
               print("Individual delete failed")
            }
         }
         label.alpha = 0
         logOutButton.alpha = 0
         logInButton.setTitle("Login", for: [])
         isLoggedIn = false
         textField.alpha = 1
      }
   } catch {
      print("Delete failed")
   }
}
  • ViewDidLoad()*-次のコードは、ViewDidLoad()関数の使用方法を説明しています。
override func viewDidLoad() {
   super.viewDidLoad()
  //Do any additional setup after loading the view, typically from a nib.
   let appDelegate = UIApplication.shared.delegate as! AppDelegate
   let context = appDelegate.persistentContainer.viewContext
   let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
   request.returnsObjectsAsFaults = false
   do {
      let results = try context.fetch(request)
      for result in results as! [NSManagedObject] {
         if let username = result.value(forKey: "name") as? String {
            logInButton.setTitle("Update username", for: [])
            logOutButton.alpha = 1
            label.alpha = 1
            label.text = "Hi there " + username + "!"
         }
      }

   } catch {
      print("Request failed")
   }
}

両方のボタンに対してアウトレットとアクションを作成しなければならなかったことを思い出してください。

次に、アプリケーションを保存して実行します。 ログインし、アプリケーションを閉じて、再度実行します。 次のようになります。

アウトレット

CoreDataで行うことはこれですべてです。 同じ概念を使用して、多くのCoreDataアプリケーションを構築できます。

キーボードの制御

このセクションでは、キーボードの動作を制御する方法を学びます。 たとえば、テキストを入力した後、テキストフィールドの外側をクリックしても、キーボードは閉じません。 ここでは、キーボードの制御方法を理解します。

入力フィールドの外側をクリックするとキーボードが消えます

これは簡単なタスクです。中括弧を閉じる前に、viewControllerファイルに次のコードを貼り付けるだけです。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
   self.view.endEditing(true)
}

これにより、入力フィールドの外側をクリックするとキーボードが消えます。

リターンキーをタップするとキーボードが消えます

キーボードを非表示にするには、View Controllerに新しいTypeを追加する必要があります。 また、テキストフィールドを追加し、textFieldというアウトレットを作成します。 最後に、 UITextFieldDelegate を追加します。

UITextFieldDelegate

また、入力フィールドからView Controllerに control + drag し、表示されるオプションからデリゲートを選択します。

次に、次の関数を追加します。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
   textField.resignFirstResponder()
   return true
}

最終的なView Controllerファイルは次のようになります-

import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
   override func viewDidLoad() {
      super.viewDidLoad()
     //Do any additional setup after loading the view, typically from a nib.
   }
   override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
     //Dispose of any resources that can be recreated.
   }
   override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
      self.view.endEditing(true)
   }
   func textFieldShouldReturn(_ textField: UITextField) -> Bool {
      textField.resignFirstResponder()
      return true
   }
}

Webコンテンツのダウンロード-Facebook/Googleを開く

このセクションでは、各ボタンがそれぞれ押されたときにFacebookとGoogleを開くアプリケーションの作成について学習します。 また、Webビューとアプリトランスポートレイヤーセキュリティの概念についても学習します。 この後、独自のブラウザを作成できるようになります。

-このアプリケーションにはインターネット接続が必要です。

Webアプリケーションの作成

新しいシングルビューアプリケーション、iOSプロジェクトを作成します。 オブジェクトライブラリの検索バーで、Webビューを検索してドラッグし、main.StoryboardのViewコントローラーに追加します。

Webビューを追加した後、それをすべての隅まで伸ばします。 アプリケーションのUIは次のようになります-

アプリケーションUI

アシスタントエディターをクリックして、main.storyboardとView Controllerを開きます。 webViewのアウトレットと両方のボタンのアクションを作成します。 ロード時に、アプリケーションはwebViewにyahooをロードします。 グーグルをクリックすると、グーグルをロードし、フェイスブックボタンをクリックすると、フェイスブックページをロードするはずです。

最終的なビューは次のようになります-

最終ビュー

次のスクリーンショットは、アプリケーションのさまざまな画面がどのように見えるかを示しています。 https以外のWebサービスを開こうとすると、エラーが表示されるため、 info.plist ファイルにApp Transport Layer Security例外を追加する必要があります。

Infoplist

iOS Development Swift 2-マップの統合

地図はすべての人の日常生活の一部となっています。 場所に旅行したり、ある場所を探したりするときに、とても便利になりました。

地図の統合とインド門の特定

アプリケーションでマップを作成し、中央にインド門を表示します。 プロジェクトに実装してマップを学習します。 そのため、単一ビューiOSアプリケーションを作成し、任意の名前を付けます。

マップキットビューの追加

オブジェクトライブラリに移動し、マップキットビューを検索し、ドラッグしてビューに移動し、ビュー全体に収まるようにストレッチします。

追加中

制約を追加する

control + swiftファイルを表示するには、control +ドラッグでmapViewKitのアウトレットを作成します。 現在エラーが表示される場合がありますが、処理します。 ファイルの上部で、インポートUIKITの下にインポートMapKitを追加すると、エラーが削除されます。

その後、ViewController:UIViewControllerクラスの後にMKMapViewDelegateを追加します。 今、ファイルは次のようになります-

制約の追加

次に、地図の緯度と経度、デルタ、スパン、場所、地域を作成します。 その前に、場所の緯度と経度を取得する方法を説明します。

maps.google.comにアクセスして、場所を検索します。 上部のURLに緯度と経度が表示されます。 例:インド門を検索します。

Googleマップ

緯度と経度の設定

緯度と経度を取得したら、変数を作成します。

let latitude: CLLocationDegrees = 28.610
let longitude: CLLocationDegrees = 77.230

緯度と経度のデルタの設定

緯度と経度を追加した後、それらにデルタを追加します。これは、緯度と経度を検証できる値です。 正確な場所を増やすために、最小限に抑える必要があります。

let latDelta: CLLocationDegrees = 0.04
let lonDelta: CLLocationDegrees = 0.04

マップのスパン、場所、および地域の設定

次に、マップのスパン、ロケーション、およびリージョンを作成します。

let span: MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: latDelta,
longitudeDelta: lonDelta)
let location: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude:
latitude, longitude: longitude)
let region: MKCoordinateRegion = MKCoordinateRegion(center: location, span: span)

地図を設定する

次のコマンドでマップを設定します。

mapView.setRegion(region, animated: true)

最終的なアプリケーションは、次のスクリーンショットのようになります。

最終アプリケーションのスクリーンショット

ロケーションセットがアプリケーションの中心にあることに注意してください。 これで、今すぐマップを使用して行うことができます。

Swift 2によるiOS開発-自動レイアウト

iOSアプリケーションを作成し、そのアプリケーションにUI要素を追加すると、1つのデバイスで完璧に見えるかもしれません。 それでも、他のデバイスで同じアプリケーションを試す必要があります。 確かにUIに大きな変化が見られ、一部の要素も表示されない場合があります。

自動レイアウトは、この問題を解決するために使用する手法です。 この章では、自動レイアウトを作成し、制約を適用し、スタックビューを作成して、アプリケーションをすべてのデバイスで最適かつ最適に表示する方法を理解します。

新しいシングルビューアプリケーションを作成することから始めます。

要素を追加する

以下に示すように、ビューの中央上部とビューの右下にラベルを追加します-

次に、方向を変更してみてください。右下は表示されず、センターは中央にありません。

ヒント-レイアウトを表示するためにシミュレータを実行する必要はありません。次のスクリーンショットに示すように、画面の下部にある[iPhone xとして表示]をクリックするだけです。)

Iphone

iPhoneのバージョンと向きを選択します。 UI要素が適切に配置されていないことがわかります。 したがって、向き、デバイス、またはその両方を変更すると、右下のラベルが消え、中心が中央になくなります。

センターの変更

これは、要素の固定位置を指定していないために発生します。 これを解決するために、制約を使用します。

UI要素への制約の適用

センターラベルをクリックし、コントロールを押して、ビュー内の任意の場所にドラッグし、離します。 今、あなたは見ているに違いない-

中央水平

[コンテナ内で水平に中央に配置]を選択します。 繰り返しますが、上記の手順を繰り返して、「上部への垂直間隔のレイアウトガイド」を選択します。

垂直間隔

次に、[新しい制約を追加]ボタンをクリックして、高さと幅を選択し、[2つの制約を追加]をクリックします。

2つの制約を追加

右下のラベルをクリックして、ラベルからビュー内の任意の場所へのドラッグを制御し、「トレーリングスペースからコンテナマージン」を選択します。 同様に、下のレイアウトガイドへの垂直間隔を選択します。

(ヒント-複数のオプションを一度に選択するには、Shiftキーを押しながらオプションを選択します。 すべてを選択するまで、シフトをリリースしないでください。

すべての制約を適用した後、ビューは次のようになります-

制約を適用した後に表示

スタックビュー

スタックビューは、スタック内の要素を配置することで機能します。 配置後、制約を一度だけ定義し、すべての要素がそれに応じて配置されます。 スタックビューから開始するには、次のビューを作成します。他のデバイスでは見た目が良くありません。 ただし、このセクションの他のデバイスに適したものにします。

スタックビュー

次に、上の2つのボタンを選択します。1つのボタンを選択し、コマンドを押してから2番目のボタンを選択します。 それらをスタックビューに埋め込むには、エディター→埋め込み→スタックビューに移動します。

OR

右下隅に、オプションの画像があります:/ios_development_with_swift2/images/option.jpg [オプション]このオプションを選択すると、スタックビューにビューが埋め込まれます。

水平スタックビュー

水平スタックビューは、次のスクリーンショットのようになります。

水平スタックビュー

このスタックビューが選択されている間に、属性インスペクターに移動します。 分布を均等に塗りつぶし、間隔を10に変更します。

配布

次に、このスタックビューと下のボタンを選択し、再びスタックビューに埋め込みます。 今回は、スタックビューの軸は垂直になりますが、前のスタックビューでは水平になりました。

垂直スタックビュー

今、あなたのビューは次のようになります-

垂直スタックビュー

このスタックビューが選択されている間に、その属性インスペクターに移動し、下のスクリーンショットと一致することを確認します。

属性インスペクター

今、あなたのビューは次のように見えるはずです-

ボタンビュー

最後のステップは、このスタックビューの制約を作成することです。

スタックビューを選択→[新しい制約を追加]ボタンをクリックします。

新しい制約ボタン

これにより新しいウィンドウが開き、次のスクリーンショットに示す手順に従う必要があります。

スタックビューへの制約の追加

次のスクリーンショットは、スタックビューに制約を追加する方法を説明しています。

スタックへの制約の追加

これが自動レイアウトで行うことのすべてです。 次の章では、アニメーションについて説明します。

自動レイアウト

これが自動レイアウトで行うことのすべてです。 次の章では、アニメーションについて説明します。

Swift 2によるiOS開発-アニメーション

アニメーションは、ユーザーの注意をアプリケーションに引き付けるため、アプリケーションの重要な部分です。 アニメーションは、高速で繰り返される画像の単なるコレクションです。 また、アプリケーションが他のアプリケーションと異なるようになります。

アニメーションプロジェクトの作成-キティアニメーション

これは単純なプロジェクトで、ボタンをクリックするとアニメーションが実行されます。 複数の画像を使用してGIFを作成するため、GIFをダウンロードして画像に変換すると、そのGIFの複数のフレームが得られます。

このセクションでは、次の画像を使用します。

アニメーション

これらの画像を一緒に再生すると、アニメーションが作成されます。 したがって、単一のビューアプリケーションを作成します。 次に、メインビューコントローラー内に画像ビューオプション、ラベル、およびボタンをドラッグします。 これが完了したら、画像ビューとボタンを迅速なファイルに接続します。

(これらの画像を使用したくない場合は、gifを検索し、gif to imageコンバーターを使用してオンラインで画像に変換します。)

ボタンアクション内に、ボタンが押されたときに画像を表示する次のコマンドを挿入します。

imageView.image = UIImage(named: "frame_0_delay-0.1s.gif")
//frame_0_delay-0.1s.gif, is the name of image

これは、プログラムで画像を画像ビューに割り当てる方法です。 ビューは次のようになります-

画像の割り当て

アプリケーションを実行すると、最初のビューが表示されます。 [アニメーション]ボタンをクリックすると、画像が表示されます。

アニメーションボタン

これはアニメーションではなく、単なる画像です。 ここでアニメーションを作成します-

イメージアウトレットの下に変数を追加します: var counter = 1

私たちの画像には共通の名前があり、1文字だけが異なっていることを確認してください。 以下に示すように、アニメーションボタンのコードを変更します-

@IBAction func animatePressed(_ sender: Any) {
   imageView.image = UIImage(named: "frame_\(counter)_delay-0.1s.gif")
   counter += 1
   if counter == 9 {
      counter = 0
   }
}

これで、 animate ボタンを押すと、画像が毎回変わります。 次のステップは、次を作成することです-

  • 変数を作成します- isAnimating とそれにFalseを割り当てます。
  • タイマー変数を作成し、それに* Timer()*関数を割り当てます。

上記の2つの手順が完了したら、関数animateを作成し、次のコードを貼り付けます。

func animate() {
   imageView.image = UIImage(named: "frame_\(counter)_delay-s.gif")
   counter += 1
   if counter == 9 {
      counter = 0
   }
}

ここで、counterは前のファイルで作成したカウンター変数です。 さて、アニメーションボタン機能内で、次のコードを追加します-

if isAnimating {
   timer.invalidate()
   isAnimating = false
} else {
   timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector:
   #selector(ViewController.animate), userInfo: nil, repeats: true)
   isAnimating = true
}

アプリケーションを実行すると、アニメーションがデバイスで実行されていることがわかります。

チャレンジ-アニメーションを停止する停止ボタンを追加します。

Webサービスへのアクセス

アプリケーションでは、APIに接続し、そのAPIからデータを取得してアプリケーションで使用する必要がある場合があります。

まず、データを提供するURLが必要です。

api.openweathermap.org/data/2.5/forecast?id=524901&APPID=1111111111

その後、サービスがhttpsでない場合、アプリケーションがWebサービスと通信できるようにトランスポートレイヤーセキュリティ例外を追加する必要があります。 これらの変更は、 info.plist ファイルで行います。

最後に、URLSessionを作成してネットワーク要求を作成します。

let urlString = URL(string: "your URL") //Making the URL
if let url = urlString {
   let task = URLSession.shared.dataTask(with: url) {
      (data, response, error) in//Creating the URL Session.
      if error != nil {
        //Checking if error exist.
         print(error)
      } else {
         if let usableData = data {
           //Checking if data exist.
            print(usableData)
           //printing Data.
         }
      }
   }
}
task.resume()

これは、URLセッションを使用してアプリケーションでWebサービスを使用する方法です。

アラモファイア

Alamofireは、迅速に記述されたHTTPネットワークライブラリです。 URLリクエストの作成、データの送信、データの受信、ファイルのアップロード、データ、認証、検証などに使用できます。

Aalmofireをインストールするには、https://github.com/Alamofire/Alamofire#installation [GitHub]で公式にAlamofireにアクセスし、インストールガイドを読むことができます。

Alamofireでリクエストを行う

Alamofireでリクエストを行うには、次のコマンドを使用する必要があります。

Import Alamofire
Alamofire.request("url");

応答処理

次のコマンドは、応答処理に使用されます。

Alamofire.request("url").responseJSON {
   response in
   print(response.request)
  //original URL request
   print(response.response)
  //HTTP URL response
   print(response.data)
  //server data
   print(response.result)
  //result of response serialization
   if let JSON = response.result.value {
      print("JSON: \(JSON)")
   }
}

応答検証

次のコマンドは、応答処理に使用されます。

Alamofire.request("https://httpbin.org/get").validate().responseJSON {
   response in
   switch response.result {
      case .success:
      print("Validation Successful")
      case .failure(let error):
      print(error)
   }
}

これらは、URLセッションとAlamofireを使用したURLリクエストの基本です。 より高度なAlamofireについては、https://github.com/Alamofire/Alamofire [Alamofire Documentation]にアクセスしてください。詳しくはこちらをご覧ください。

同時実行制御

同時実行は、複数のことを同時に実行する方法です。 アプリケーションでは、同時実行性とは、同時に/同時に実行される複数のタスクを指します。

同時実行により、アプリケーションがより速く、よりクリーンになり、ユーザーにより良いエクスペリエンスが提供されます。 多くの開発者にとってマルチスレッドの使用は難しいように見えますが、 NSOperationDispatch Queues のようなAPIを使用すると、アプリケーションで並行処理とマルチスレッドを簡単に使用できます。

グランドセントラル派遣

GCDは、並行コードを管理し、システムレベルで非同期的に操作を実行するために最も一般的に使用されるAPIです。 GCDは、タスクのキューを提供および使用します。 これらのキューは、FIFOの用語を使用するデータ構造です。 キューの最初の場所にあるタスクが最初に実行され、キューの最後のタスクが最後に実行されます。

たとえば-映画のチケット予約ラインで、あなたが最後の人である場合、あなたは最後にチケットを取得し、誰かがあなたの後に来る場合、彼はあなたの後にチケットを取得します。

ディスパッチキュー

ディスパッチキューは、アプリケーションで非同期的かつ同時にタスクを実行する簡単な方法です。 キューには2種類あります-

  • シリアルキュー-タスクを一連の方法で保存し、一度に1つのタスクを実行します。
  • 同時キュー-タスクを一連の方法で保存し、一度に1つのタスクを実行します。

キューを作成または取得するために使用される機能のいくつかは-

dispatch_queue_create
//create a serial or concurrent queue
dispatch_queue_get_label
//get the label of a given queue
dispatch_get_main_queue
//get the one and only main queue
dispatch_get_global_queue
//get one of the global concurrent queues

キューへのタスクの追加

キューにタスクを追加するのに役立つ2種類の関数があります。 彼らは-

同期関数-

  • dispatch_once -アプリケーションの有効期間を超えたタスクのみを送信します。
  • dispatch_sync -タスクをキューに送信し、タスクが完了したときにのみ戻ります。

非同期関数-

  • Dispatch_async -タスクを送信して戻ります。
  • Dispatch_after -すぐに戻りますが、特定の時間遅延します。
  • Dispatch_async -すぐに戻りますが、タスクは複数回送信されます。

コード例

以下は、タスクをキューに追加するためのコード例です。

dispatch_async(dispatch_get_main_queue(), update_block);
//add update_block to main queue

dispatch_apply(i, some_queue, work_block)
//add work_block to some_queue i times

dispatch_sync(background_queue, blocking_block)
//add blocking block to background queue and wait for completion

キューを使用する一般的な例

次のコードは、キューの使用例です。

dispatch_async(background_queue, ^ {
  //Perform code that takes long time, here.
   Dispatch_async(dispatch_get_main_queue(), ^ {
     //Some other task, generally UI.
   });
});

これが同時実行制御で行うことです。これは、中間iOS開発者になるまでの十分な情報です。

学んだ概念を実践し続け、要件に応じてそれらを修正および統合してください。 Ios-development-with-swift2-interview-questions