Edited at

コピーして使える、Swift用便利な機能リファレンス v1.1

本記事はコードをコピーするだけで使えます。(はずです。バグがあったら報告をお願いします)

全てSwift2.0以下、iOS 10以下は対応してません。

また、全てUIKitがインポートされていることを想定します。

OKやCancel、messageなどの文字列は変えられます。


アラート


表示スタイル


Alert


Alert.swift

// ボタンを押下した時にアラートを表示するメソッド

@IBAction func dispAlert(sender: UIButton) {

// ① UIAlertControllerクラスのインスタンスを生成
// タイトル, メッセージ, Alertのスタイルを指定する
// 第3引数のpreferredStyleでアラートの表示スタイルを指定する
let alert: UIAlertController = UIAlertController(title: "アラート表示", message: "保存してもいいですか?", preferredStyle: UIAlertControllerStyle.Alert)

// ② Actionの設定
// Action初期化時にタイトル, スタイル, 押された時に実行されるハンドラを指定する
// 第3引数のUIAlertActionStyleでボタンのスタイルを指定する
// OKボタン
let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler:{
// ボタンが押された時の処理を書く(クロージャ実装)
(action: UIAlertAction!) -> Void in
print("OK")
})
// キャンセルボタン
let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: UIAlertActionStyle.Cancel, handler:{
// ボタンが押された時の処理を書く(クロージャ実装)
(action: UIAlertAction!) -> Void in
print("Cancel")
})

// ③ UIAlertControllerにActionを追加
alert.addAction(cancelAction)
alert.addAction(defaultAction)

// ④ Alertを表示
presentViewController(alert, animated: true, completion: nil)
}



ActionSheet

UIAlertControllerクラスのインスタンスを生成するときに、prefferredStyleをActionSheetに変えるとActionSheetとなるみたいです。

Alert.swift

let alert: UIAlertController = UIAlertController(title: "アラート表示", message: "保存してもいいですか?", preferredStyle: UIAlertControllerStyle.ActionSheet)

こういうことらしいです。


テキストボックス付きのアラート

ActionSheetでは使えないみたいです。残念。

iOS 10まで使われていたApp Storeの、パスワード入力ダイアログです。


Alert.swift

alert.addTextFieldWithConfigurationHandler({(text:UITextField!) -> Void in

text.placeholder = "これはPlaceholderです"
var label:UILabel = UILabel(frame: CGRectMake(0, 0, 50, 30))
label.text = "IDを入力→"
text.leftView = label
text.leftViewMode = UITextFieldViewMode.Always
})

これを③ UIAlertControllerにActionを追加の後に書きます。

するとテキストボックスが作成されるはずです。


ボタンスタイル

UIAlertActionStyle
文字色
スタイル
複数指定
その他

default

標準

cancel

太字
不可
最下部に位置固定

destructive

標準

② Actionの設定の時に、ボタン作成コードを変えるとこうなるみたいです。


Alert.swift

// Defaultボタン

let defaultAction_1: UIAlertAction = UIAlertAction(title: "default_1", style: UIAlertActionStyle.Default, handler:{
(action: UIAlertAction!) -> Void in
print("defaultAction_1")
})
// Cancelボタン
let cancelAction: UIAlertAction = UIAlertAction(title: "cancel", style: UIAlertActionStyle.Cancel, handler:{
(action: UIAlertAction!) -> Void in
print("cancelAction")
})
// Destructiveボタン
let destructiveAction_1: UIAlertAction = UIAlertAction(title: "destructive_1", style: UIAlertActionStyle.Destructive, handler:{
(action: UIAlertAction!) -> Void in>
print("destructiveAction_1")
})


共有画面

Accountsをインポートします。


Share.swift

import Accounts



Share.swift

let shareText = "ここに共有したいテキスト"

let shareWebsite = NSURL(string: "ここに共有したいウェブサイト")!
let shareImage = UIImage(named: "共有したい画像")!
let activityItems = [shareText, shareWebsite, shareImage]
// 初期化処理
let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
// 使用しないアクティビティタイプ
let excludedActivityTypes = [
UIActivityTypePostToFacebook,
UIActivityTypePostToTwitter,
UIActivityTypeMessage,
UIActivityTypeSaveToCameraRoll,
UIActivityTypePrint
]
activityVC.excludedActivityTypes = excludedActivityTypes
// UIActivityViewControllerを表示
self.presentViewController(activityVC, animated: true, completion: nil)


Touch ID認証

まずLocalAuthentication.frameworkをプロジェクトに追加します。

プロジェクトの設定(?)のGeneralの下の方にある「Linked Frameworks and Libraries」に

LocalAuthentication.frameworkを追加します。

LocalAuthentication.frameworkを追加する.png


TouchID.swift

import LocalAuthentication


LocalAuthenticationをインポートします。

これで準備は完了です。


TouchID.swift

let context = LAContext()

var error : NSError?
if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error) {
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "ここに何のための認証なのかを書く", reply: { success, error in
if (success) {
NSLog("認証成功")
} else {
NSLog("認証失敗:" + error!.code.description)
}
})
} else {
NSLog("TouchIDが非対応の機種です")
}


UserDefaults


UserDefaults.swift

// 保存

UserDefaults.standard.set(true, forKey: "boolKeyName")
UserDefaults.standard.set("UserDefaults", forKey: "stringKeyName")
UserDefaults.standard.set(1, forKey: "integerKeyName")
UserDefaults.standard.set(1.0, forKey: "doubleKeyName")
UserDefaults.standard.set(1.0, forKey: "floatKeyName")

// 読み込み
UserDefaults.standard.bool(forKey: "boolKeyName")
UserDefaults.standard.string(forKey: "stringKeyName")
UserDefaults.standard.integer(forKey: "integerKeyName")
UserDefaults.standard.double(forKey: "doubleKeyName")
UserDefaults.standard.float(forKey: "floatKeyName")



バージョン情報

1.0 : 公開

1.1 : UserDefaultsを追加


引用したページ一覧

普通にページを見て実装とかしてもいいと思います。

アラート

https://qiita.com/funafuna/items/b76e62eb82fc8d788da5

https://qiita.com/kitanoow/items/8e12c575f574b0f22016

共有画面

https://qiita.com/nashirox/items/56894599013d712faa0a

Touch ID

https://qiita.com/SRAUFactory/items/82ab85c166eee9e5fa0e

https://qiita.com/aokiplayer/items/a43d1b302ea7fba40970

UserDefaults

https://qiita.com/KokiEnomoto/items/c79c7f3793a244246fcf