月別アーカイブ: 2016年10月

【Swift3】【AVAudioPlayer】音を出してみる。

AVAudioPlayerを使って音を出します。

参照サイト。
ピアノアプリ(SwiftPiano)を作ろう!4. 音が出るコードを書く(まずは、ドの音だけ) | bick.xyz
[iPhone] AVAudioplayer 音楽の再生 | iPhoneアプリ開発
AVFoundationでのBGMの再生について(Swift) – スタック・オーバーフロー
[Swift] AVAudioPlayer. 音楽、効果音の再生、ループ回数、音量、速度を設定する。 | はじはじアプリ体験記

例によってSwift3になって色々と変わっているようです。

まずは音のファイルを用意します。
今回はこちら
インターフェイス Vol.1 | 効果音辞典 – フリー効果音素材ライブラリ
から音を使わせていただきました。

decision-6.mp3というファイルを使っています。

AVAudioPlayerを使うにはAVFoundation.frameworkが必要です。
TARGET>Generalで追加しておきます。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var audioPlayerClear : AVAudioPlayer! = nil //クリア時用

    override func viewDidLoad() {
        super.viewDidLoad()
        makeSound()
    }

// MARK: サウンドファイル作成
    func makeSound() {
    //Clear音作る。
        //音声ファイルのパスを作る。
        let soundFilePathClear : NSString = Bundle.main.path(forResource: "decision-6", ofType: "mp3")! as NSString
        let soundClear : NSURL = NSURL(fileURLWithPath: soundFilePathClear as String)
        //AVAudioPlayerのインスタンス化
        do{
            audioPlayerClear = try AVAudioPlayer(contentsOf: soundClear as URL, fileTypeHint:nil)
        }catch{
            print("Failed AVAudioPlayer Instance")
        }
        //出来たインスタンスをバッファに保持する。
        audioPlayerClear.prepareToPlay()
    }

あとは呼び出したいタイミングで

                self.audioPlayerClear.play()

と記述すれば音がなる。はず。

【Swift3】【UIAlertController】アラートを出す。

アラートを出します。

参考はこちら。
【Swift】アラートを表示する(Alert/ActionSheet) – Qiita
【swift】アラート(Alert) / アクションシート(ActionSheet) – 父ロボの開発覚書
Swift:UIAlertController でアラートを表示するサンプルコード | siro:chro

Swift3になって色々直された。
んでこんな感じ。

import UIKit

class ViewController: UIViewController {

    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.
    }

    
    @IBAction func alartButton(sender: AnyObject) {
        alertHyouji()
    }
    
    func alertHyouji()  {
        
        //アラートのインスタンス作成、タイトル、メッセージ、スタイル。
        let alert: UIAlertController = UIAlertController(title: "Alert",
                                                         message: "Count clears.",
                                                         preferredStyle:  UIAlertControllerStyle.actionSheet)

        // OKボタン
        let defaultAction: UIAlertAction = UIAlertAction(title: "OK",
                                                         style: UIAlertActionStyle.default,
                                                         handler:{(action: UIAlertAction!) -> Void in
                                                            //ココに処理を書く
                                                            print("OK")
        })
        
        // Destructive 赤文字ボタン
        let destructiveAction: UIAlertAction = UIAlertAction(title: "赤いよ",
                                                             style: UIAlertActionStyle.destructive,
                                                             handler:{
                                                                (action:UIAlertAction!) -> Void in
                                                                //ココに処理を書く
                                                                print("Destructive")
        })
        
        // Cancelボタン 一つだけしか指定できない
        let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel",
                                                        style: UIAlertActionStyle.cancel,
                                                        handler:{
                                                            (action:UIAlertAction!) -> Void in
                                                            print("Cancel")
        })
        
        // AddAction 記述順に反映される。Cancelは最下段固定。
        alert.addAction(defaultAction)
        alert.addAction(destructiveAction)
        alert.addAction(cancelAction)
        
        // alartを表示する。
        present(alert, animated: true, completion: nil)
    }
}

UIAlertControllerStyle.Alert // アラート
UIAlertControllerStyle.ActionSheet // アクションシート
の2つのスタイルがあります。

【Swift3】アプリの非アクティブ化時に呼び出す。

アプリを起動した時にロード。アプリがバックグラウンドに入った時にセーブするのに調べた。

参考サイト。
アプリが非アクティブになったことをViewControllerで検知する方法 [UIApplicationDelegate] – MILLEN BOX

UIApplicationDelegateを設定してから、

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(呼び出す関数), name: UIApplicationWillResignActiveNotification, object: nil)

を設置する。
んだったようだが、これもSwift3で変わったらしい。

参考サイト
swift 3.0 のメモ – Qiita

UIApplicationDelegateを設定してから、

NotificationCenter.default.addObserver(self, selector: #selector(呼び出す関数), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
をviewDidLoadにでも書いておくと良いみたい。

import UIKit

class ViewController: UIViewController , UIApplicationDelegate{

(中略)

    override func viewDidLoad() {
        super.viewDidLoad()
        
        loadData()
        

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.saveData), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
        
        // 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.
    }

(中略)

// MARK: セーブ・ロード
    
    func saveData()  {
        // 「ud」というインスタンスをつくる。
        let ud = UserDefaults.standard
        ud.set(count, forKey: "firstCount")
        ud.set(secondCount, forKey: "secondCount")
        ud.set(thirdCount, forKey: "thirdCount")
        ud.set(fourthCount, forKey: "fourthCount")
        ud.set(fifthCount, forKey: "fifthCount")
        
        print("セーブしました。")
    }
    
    func loadData()  {
        let ud = UserDefaults.standard
        count = ud.integer(forKey: "firstCount")
        secondCount = ud.integer(forKey: "secondCount")
        thirdCount = ud.integer(forKey: "thirdCount")
        fourthCount = ud.integer(forKey: "fourthCount")
        fifthCount = ud.integer(forKey: "fifthCount")
        
        print("ロードしました。")
    }
}

こんな感じで。

【Swift3】NSUserDefaults データの永続化。

Swiftでデータ保存。
とりあえずNSUserDefaultsですよね。

参考サイト
[Swift]【NSUserDefaultsの基本的な使い方】表示、格納、削除。 – Qiita

保存。

    func saveData()  {
        // 「ud」というインスタンスをつくる。
        let ud = NSUserDefaults.standardUserDefaults()
        ud.setInteger(count, forKey: "firstCount")
        ud.setInteger(secondCount, forKey: "secondCount")
        ud.setInteger(thirdCount, forKey: "thirdCount")
        ud.setInteger(fourthCount, forKey: "fourthCount")
        ud.setInteger(fifthCount, forKey: "fifthCount")
        
        print("セーブしました。")
    }

取り出す。

    func loadData()  {
        let ud = NSUserDefaults.standardUserDefaults()
        count = ud.integerForKey("firstCount")
        secondCount = ud.integerForKey("secondCount")
        thirdCount = ud.integerForKey("thirdCount")
        fourthCount = ud.integerForKey("fourthCount")
        fifthCount = ud.integerForKey("fifthCount")
        
        print("ロードしました。")
    }

Swift3で変わったらしい。
参考サイト
Xcode8+Swift3でNSUserDefaultsが使えない

変更した。

// MARK: セーブ・ロード
    
    func saveData()  {
        // 「ud」というインスタンスをつくる。
        let ud = UserDefaults.standard
        ud.set(count, forKey: "firstCount")
        ud.set(secondCount, forKey: "secondCount")
        ud.set(thirdCount, forKey: "thirdCount")
        ud.set(fourthCount, forKey: "fourthCount")
        ud.set(fifthCount, forKey: "fifthCount")
        
        print("セーブしました。")
    }
    
    func loadData()  {
        let ud = UserDefaults.standard
        count = ud.integer(forKey: "firstCount")
        secondCount = ud.integer(forKey: "secondCount")
        thirdCount = ud.integer(forKey: "thirdCount")
        fourthCount = ud.integer(forKey: "fourthCount")
        fifthCount = ud.integer(forKey: "fifthCount")
        
        print("ロードしました。")
    }

【Swift3】Status BarをLandscapeで表示する。

ほぼ参考サイトそのままです。(−人−)

参考サイト。
対処法: iOS8でLandscape時、Status Barが隠れる仕様を元に戻す | Swift3.0 Web入門書

下記のコードを加えるだけでokっぽい。

override func prefersStatusBarHidden() -> Bool {
    return false
}

追記
Swift3で変わったらしい。
参考サイト
swift 3.0 のメモ – Qiita

    //横向きでステータスバーを表示
    override var prefersStatusBarHidden: Bool {
        return false
    }

【自作アプリ】Find Your Passion ~情熱の壁紙~

Find Your Passion ~情熱の壁紙~
カテゴリ: ライフスタイル
現在の価格: 無料

Find Your Passion! ~情熱の壁紙~

人生において重要なのは「何をするか、何をしないか」という事です。
人は自分が本当にやりたいと思う事をする時、最も能力を発揮します。
しかし、自分がやりたい事やその優先度をはっきりさせていないと、やりたくもない事をダラダラと何時間も何日も何年も非効率に過ごしてしまう事になります。
このアプリ「Find Your Passion! ~情熱の壁紙~」は、自分のやりたい事、情熱を持てる事をはっきりとさせ、更には優先度を設定し、人生を有効に過ごすためのアプリです。

使い方は簡単です。

1,まず、Find Passionタブで、右上の+で新規項目を作り、理想の人生をあゆんでいる時、「自分は何をしているか」「何者であるか」「何を持っているか」という事を「タイトル」に書き込みます。
そしてその時どんな事が起こっているか考えられる事を具体的に「内容」に書き込みます。
これを思いつく限り行います。
img_8134

2,思いつく限りの情熱を書き出したら、今度は左上の編集ボタンを押します。そして、一番下の項目を一つ上の項目と比較検討しどちらが重要かを決めます。
より重要と思われる項目を選び、また一つ上の項目と比較し一番上まで比較検討すると、人生において一番重要と思っている事が一番上に来ます。
1番が決まったら、また一番下の項目から比較を繰り返し2番めに重要な事、3番目に重要な事と、決めていきます。
少なくとも上位5位までを決めて下さい。
img_8138

3,Wall Paperタブでは5番目までの情熱の壁紙を作る事ができます。
背景画像を選び、文字サイズ、文字色、その他の設定をして、Saveボタンでカメラロールに保存されるのでロック画面に設定して下さい。
img_8135

常に自分のやるべき事、やらない事、優先順位を意識して有意義な人生を送りましょう。