【Swift】超簡単!Swiftでカメラを利用する方法
カメラの起動、撮影などを自分のアプリで利用する方法もかなり簡単に実装可能です。
宣言するプロトコルは以下の二つ
UIImagePickerControllerDelegate, UINavigationControllerDelegate
importするlibrary
Photos
controllerでimport
import Photos
plistに情報を追加する
privacyと入力し、以下のcamera ...を選択
valueには適当な文字列(カメラを使う)などを入力
これは許可画面に表示される文字に利用されます。
続いてPhotoLibraryも同様に追加
以上で事前準備はOKです。
あとは実装していくだけです。
カメラを利用する場合には以下のように書きます。
(ちなみにアルバムを利用する場合は、UIImagePickerControllerSourceType.cameraのところを
UIImagePickerControllerSourceType.
photoLibraryに変更するだけであとは一緒です。)
let sourceType:UIImagePickerControllerSourceType = UIImagePickerControllerSourceType.camera // カメラが利用可能かチェック if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ // インスタンスの作成 let cameraPicker = UIImagePickerController() cameraPicker.sourceType = sourceType cameraPicker.delegate = self self.present(cameraPicker, animated: true, completion: nil) }
以上でOKです。
もし、撮影したimageをすぐ背景に適用したいなどであれば
imagePickerController というdelegateメソッドないに記述すればOK
【Swift】 UITextFieldタップ時にUIDatePickerを表示する方法
以下のように、UITextFieldのタップ時にUIDatePickerを表示する方法を記載。
日本語のサイトにSwiftのver4.0での実装方法が載っておらず、苦戦したため備忘です。
1.story boadにUITextFieldを配置し、ソースコードに関連付け
@IBOutlet var dateTextField: UITextField!
2.UITextFieldDelegateプロトコルを宣言
UITextFieldDelegate
例
class ViewController: UIViewController, UITextFieldDelegate {
3.viewDidLoadでdatePickerのインスタンスを生成し、フォーマットした値をtextFieldに入れる
override func viewDidLoad() { super.viewDidLoad() dateTextField.delegate = self let datePicker = UIDatePicker() // ②日本の日付表示形式にする datePicker.locale = NSLocale(localeIdentifier: "ja_JP") as Locale datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChange(sender:)), for: UIControlEvents.valueChanged) dateTextField.inputView = datePicker }
XCodeが異常に重くなった時の対処法
XCodeで新規でプロジェクトを作りまくり開発を行なっていたところ
インジケーターがいちいち周り、異常に重くなり開発が進まなくなりました。
ログがたまりまくっていることが原因でした。
以下のコマンドでログを削除
これでめちゃくちゃ軽くなりました!!
Swift UserDefautsでUIImageを保存する方法
例えばフォトアルバムから取得したimageを背景などに設定し、
利用したい場合、取得したファイルを永続化する必要があります。
そんな時にはUIImageを一度NSData型に変換して保存します。取得するときに、再変換すればUIImageを取得することが出来ます。
以下のようなソースになります。
保存
UserDefaults.standard.set(UIImageJPEGRepresentation(image, 0.8), forKey: "imageData")
取得
let imageDate:NSData = UserDefaults.standard.object(forKey: "imageData") as! NSData
backImageView.image = UIImage(data:imageDate as Data)
超簡単!Swiftで音を再生する方法
Swiftを音を再生する方法は超簡単です。
ライブラリをimport
音の再生に必要なframeworkをimportしましょう!
importするframeworkは `AVFoundation`
以下のようにしましょう
まずプロジェクトを選択し、Generalの下の方の
Linked Framework and Libraries
+ボタンをおし、AVFoundatioをadd
これでプロジェクトでAVFoundationが利用できるようになりました。
続いて利用したいVIewControllerに取り込みましょう!
import AVFoundation
そしてAVAudioPlayerを宣言
var audioPlayer: AVAudioPlayer!
あとは音楽を再生したい箇所で以下のようにかけばOKです
if let url = Bundle.main.url(forResource: "delete", withExtension: "mp3") {
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch {
audioPlayer = nil
}
} else {
//error
}
audioPlayer?.play()で再生
stop()で停止できます。
超簡単ですね!!
すぐできる!SwiftでのUITableViewの使い方
上記のようなUIはUITableViewを使って実現されています。
Lineのトークの一覧にも利用されていますね。
私がSwiftを始めたばかりの頃は、本やいろんなサイトを見ながらこのUITableViewをなんとか使えるようになりましたが
無駄に時間がかかったので簡単にまとめておきます。
UITableViewとは
情報をリスト表示したい時に使います。
そして1つの項目を表示する領域を「セル」と言います。
セルには、UITableViewCellというものを使用します。
使い方
大きくやることは以下の3つ!!
- storyboardにUITableViewとUITableViewCellを配置します
- UITableViewとUITableViewCellに情報を受け渡す設定
- ViewControllerに必要なメソッドを書く
セルをView Controller内で使用出来るように設定しておく
Table View Cellを選択し、右側の「Show the Attributes inspector」という項目を選択します。
ここの「Identifier」という項目にセルの識別子を付けます。
上記の設定が済んだら後はコードをどんどん書いていきます!
ViewControllerの編集
ここでやること
- 表示するための変数(配列)を定義
- UITableViewDelegateとUITableViewDataSourceを実装
- デリゲートメソッドとデータソースメソッドを定義
- 変数の内容が表示されるようにする
1.は配列を定義するだけ
2.は以下のように実装
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
ここまで記述するとエラーが起きます。
これは3.のdelegate datasourceを実装すれば解消されます。
3.
storyboardでTable View CellのIdentifierに設定した値を入れる必要がある