使って創ってApp

ソフトウェアを使ったり作ったりするブログです

iOSアプリ開発でシェイクを検出する

iOSアプリ開発で、シェイクジェスチャーを検出する方法のメモです。

Udemy の講座 完全攻略!初心者からプロになるためのiOS 9アプリ開発のすべて のレクチャー83 を参考にしています。

開発環境

シェイクジェスチャーを検出する

viewcontroller に以下のコードを書きます。

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
  if motion == UIEventSubtype.MotionShake {
    print("Device was shaked")
  }
}

print 文の箇所が、シェイクジェスチャーを検出した場合に実行されます。

ちょっと疑問

Udemyの講座でもネットで調べても、if motion == UIEventSubtype.MotionShake の部分が if event?.subEventType == UIEventSubtype.MotionShake になっています。せっかく motion 引数が渡されているのに、なぜ後者の方法を取るのでしょうね? ドキュメントで motionEnded メソッドを調べても特に注意は書かれていませんでしたし、このメソッドが書かれているサンプルプロジェクト(GLPaint)では motion == の書き方をしていました。なので motion == でもきっと問題ないでしょう。

iOSアプリ開発でビューをフェードインで表示させる

iOSアプリ開発でビューをフェードイン表示させます。もちろんフェードアウトもできますよ。

フェードイン表示はアニメーション表示の一種なので、UIView クラスの animateWithDuration メソッドを使用します。

開発環境

完成予定図

f:id:hitxutokun:20160106224502g:plain

ボタンをタップすると、青い背景のビューがフェードインで表示されます。

ビューをフェードイン表示させる

Xcode の Single View Application テンプレートで作成します。

ボタンとビューを配置・設定

ボタンとビューを Main.storyboard に最初からある ViewController のビューに配置します。追加するビューの Alpha を 0 にします。

f:id:hitxutokun:20160106225919p:plain

ビューの背景色を変更し、ボタンのタイトルを Show に変更しました。ビューは透明なので、どこにあるのか分かりません。

f:id:hitxutokun:20160106230715p:plain

画像では、ビューを選択しているのでどこにあるのか分かりますね。青い線が表示されているのは Constraint を設定しているからです。

追加したビューを設定

追加したビューを、Outlet 名を blueView として ViewController.swift にリンクさせます。

ボタンにアクションを設定

ボタンを、アクション名を showBlueView として ViewController.swift にリンクさせます。showBlueView メソッドに以下のコードを書きます。

@IBAction func showView(sender: AnyObject) {
  UIView.animateWithDuration(2.0) { () -> Void in
    self.blueView.alpha = 1.0
  }
}}

これで完成です。

animateWithDuration メソッドの animation 引数のクロージャに、アニメーション終了時のビューのプロパティを書きます。今回は、blueView を不透明にしたいので、 self.blueView.alpha = 1.0 にしました。

まとめ

ビューのプロパティをアニメーションさせながら変えたい時は、UIView クラスの animateWithDuration メソッドを使う。楽にアニメーション表現ができます。

Swift2.1で10進数を2進数・8進数・16進数に変換する

Swift2.1で10進数を2進数・8進数・16進数に変換する方法のメモです。Playground で試してみると良いでしょう。

実行環境

10進数を2進数・8進数・16進数に変換する

変換した数値は String型で受け取ります。

let num = 13
String(num, radix: 2) // 1101
String(num, radix: 8) // 14
String(num, radix: 16) // c

基数変換の余談

ちなみに、基数(引数の radix )は36以下の数を指定できます。最大基数の36は、0~9とa~zの合わせて36文字で表現します。

String(35, radix: 36) // z String(36, radix: 36) // 10

Toolbarの右側に Bar Button Item を配置する iOSアプリ開発

iOSアプリ開発で、画面の下にボタンなどを配置する Toolbar の右側に Bar Button Item を配置する方法を、メモとして残します。

Flexible Space Bar Button を使用して、右側に配置させます。

開発環境

完成予定図

f:id:hitxutokun:20160104234911p:plain

Toolbar の右側に Bar Button Item を配置する

プロジェクトテンプレートから Single View Application を選択して、プロジェクトを作成します

  1. Toolbarを配置
  2. Bar Button Item を Tooolbar に配置
    この際、Buttonは左側に配置されます。
  3. Flexible Space Bar Button を先ほど配置した Button の左側に配置

    f:id:hitxutokun:20160104235948p:plain

これで Bar Button Item が右側に配置されます。

SwiftのドキュメントがDashだと検索しやすい

Dash で Swift のドキュメントは読みやすい

Dashは様々なプログラミング言語のドキュメントをダウンロードして検索できるアプリです。Swift のドキュメントを調べるためによく使っています。

Dash 公式ホームページ

Dash で Swift のドキュメントを検索するときは、Documentation欄 の Swift をダブルクリックするなりして、 Swift ドキュメントだけを検索するようにしています。

f:id:hitxutokun:20160103225644p:plain

 

こうすると UIKit の API などを検索しなくなります。また、クラスの定数やメソッドの表示(画面の左下)が見やすくて気に入っています。

f:id:hitxutokun:20160103230348p:plain

Swift 2.1で文字列を逆順にする

Swift 2.1 で文字列を逆順にします。他のこと調べていたら出てきたのでメモ。

開発環境

Swift 2.1 で文字を逆順

let str = "Hello".characters.reverse()
let str_rev = String(str) // olleH

Swift 2.1でStringからIntやDoubleに変換する

Swift 2.1 で String 型の値を、 Int や Double などの数値に変換する方法です。検索してみると古い方法しか書かれておらずちょっと困惑しましたが、公式ドキュメントにちゃんと書いてありました。

developer.apple.com

開発環境

StringからIntに変換する

早速コードを載せます。

let num = Int("872") // Optional(872)

基数を指定することもできます。

let num = Int("111", radix:2) // Optional(7)

しかし、下記はできません。

let num = Int("13", radix:2) // nil

13は2進数の表現ではないので、nil が返ります。