カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

カメラで写真を撮影する UIImagePickerController

システムのカメラ機能を使って写真を撮影します。
特に考えることなく、簡単に実装できますので試してみてください。

簡単に実装できますが、カスタマイズすることができないので、
カスタマイズしたい方はAVFoundationを利用してください。

カメラ利用の許可

まずはカメラを利用するためInfo.plistにカメラの利用許可を追加します。
また、写真を撮影するということは保存するためにフォトライブラリーにアクセスしますので、そちらも一緒に追加します。

Privacy - Camera Usage Description
Privacy - Photo Library Usage Description

Valueには「写真を撮影します。」「写真を保存します。」等と設定します。

デリゲート

UIImagePickerControllerDelegateとUINavigationControllerDelegateを設定します。
後者が必要なのはUIImagePickerControllerの親クラスがUINavigationControllerのためです。

class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

Viewの配置

StoryBoardでViewControllerにViewと、カメラ起動と保存ボタンの2つのButtonを配置します。

配置したViewを「previewView」としてOutlet接続します。

@IBOutlet weak var previewView: UIView!

続きを読む…»

2,639 views

ブラウザで指定したURLを開く

外部ブラウザ(Safari)で指定したURLを開く方法のご紹介です。

URLを指定します。

let url = URL(string: "http://~")

ブラウザを起動

UIApplication.shared.open(url!)

サードパーティ製ブラウザで開く場合は、URLスキームを変えてやる必要があります。
※現状での動作は確認していますが、各アプリの変更によってスキームが変更になる可能性はあります。

Google Chromeの場合
こちらの場合、httpは省きます。

let url = URL(string: "googlechrome://~")

Firefoxの場合

let url = URL(string: "firefox://open-url?url=http://~")

Operaの場合

let url = URL(string: "opera-http://~")

Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12

5,447 views

Swift3 クリップボードにテキストをコピー

クリップボードにテキストをコピーします。

let board = UIPasteboard.general
board.setValue("text", forPasteboardType: "public.text")

Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12

1,634 views

Swift3 システム効果音を鳴らす

鐘やトライトーン等の効果音を簡単に鳴らすことができます。

import AudioToolbox
let soundIdRing: SystemSoundID = 1000 //鐘
AudioServicesPlaySystemSound(soundIdRing)
サウンドIDの抜粋
ID
1000
1001 スウォッシュ
1002 トライトーン
1003 SMSメッセージ受信音
1004 SMSメッセージ送信音
1005 通知
1006 充電残量低下音
1007 トライトーン
1008 チャイム
1009 ガラス
1010 ホーン

その他IDはこちらをご参照ください。
http://iphonedevwiki.net/index.php/AudioServices

Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12

6,805 views

Swift3で剰余を求める

剰余(割り算の余り)を求めたいとき、「Mod」か「%」を知っていれば事足りていたのですが、Swift3ではできないケースがありましたので、メモしておきます。

Intでは「%」で大丈夫なようですが、FloatやDoubleの場合はエラーになります。

Doubleの場合(Floatも同様)

let n: Double = 12.0
n.truncatingRemainder(dividingBy: 10.0)
1,167 views