ramkaの朝ごはんはピーナッツパン

超個人的備忘録です。基本自分のためなので、内容の不備、読みづらさ、つまらなさはご了承ください。

swiftで録音する

qiita.com

このままコピペしても動きませんでした

recorde関数のsetCategoryがそのままできなかったので、
以下のように変更

//            try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
            try! session.setCategory(AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.default, options: AVAudioSession.CategoryOptions.defaultToSpeaker)

record関数で変なエラーが出て、
「info.plistにちゃんとマイクにアクセスするってことを書いて」って怒られるので、
info.plistに以下を追加してみる

f:id:ramka:20190105232011p:plain
info.plistに追加



[-以下が追記-]
録音を行う関数の中に、再生を行うためのイニシャライズ処理も入っているようでした
録音直後は再生できるけど、一度アプリを閉じた直後に再生できなくなるのはそのためっだったようです

以下が再生も行うためのソース

        let session = AVAudioSession.sharedInstance()
        try! session.setCategory(AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.default, options: AVAudioSession.CategoryOptions.defaultToSpeaker)
        try! session.setActive(true)

これをしないと再生できない

動的に追加したボタンにジェスチャーを追加する

コードからボタンなどのオブジェクトを生成した時、

そのボタンを押されたとき、ドラッグされた時の処理を追加する

デザイナー(呼び方は正しいかわからない)からでは線を引っ張るだけだが、

コードではちょっとだけめんどい

でも思っていたよりは随分と楽にできたなと思う

040 GestureRecognizerのイベント取得 - Swift Docs

ここのサイトを参考に、

ジェスチャーイベントをボタンに追加する

let myPan = UIPanGestureRecognizer(target: self, action: #selector(ViewController.dragGesture(_:)))
btn.addGestureRecognizer(myPan);

1行でもいいみたい

btn.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(ViewController.dragGesture(_:))))

dragGestureというのはドラッグした時に呼ばれる関数

サイトのソースをそのままコピるとその使い方できないよ
ってなるので、(Use of string literal for Objective-C selectors is deprecated; use '#selector' instead)
アップルのページを参考にする

iosdevcenters.blogspot.com

ボタンのデザインを変える

ボタンのデザインを設定できるカスタムクラスを作り、
そのクラスでボタンを生成することでボタンの角を丸くしたり、ボーダーの色を変えることができます

iritec.jp

SWIFTのバージョンでやっぱり怒られた

変更したコードは以下の通り

import UIKit


@IBDesignable
class Button_Custom: UIButton {

    @IBInspectable var textColor: UIColor?
    
    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
    
    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
    
//    @IBInspectable var borderColor: UIColor = UIColor.clearColor() {
//        didSet {
//            layer.borderColor = borderColor.CGColor
//        }
//    }
    @IBInspectable var borderColor: UIColor = UIColor.clear {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }

}

swiftでカメラロールの写真を表示する

基本的には以下のコードなんですが、swiftのバージョンによりエラーになってしまいます

難儀ですね

[Swift3]カメラロールから写真を選択する

以下のサイトのimagePickerController関数の引数をご参考ください

選択した画像を取得するのは

let image = info[.originalImage] as! UIImage

を参考に

ぶつかってきたオブジェクトがメンバ変数を参照する

シューティングゲームなど、
例えばAにBがぶつかったとき、Bが持っている変数を参照するやりかたを書いてみる

void OnTriggerEnter2D (Collider2D c)
{
	Debug.Log (c.GetComponent<(Bが持つスクリプトファイルのクラス名)> ().(参照したい変数名));