iOS
iPhone Xから顔認証が使えるようになったので、実装方法を調べてみました。 顔認証(FaceID)の実装方法(Swift) 実装自体は指紋認証と全く同じです。 下のようにLAContextのevaluatePolicyで認証を呼び出します。 import UIKit import LocalAuthentication cla…
下のように、UIViewControllerをpresentした時の挙動を変更してみました。 present(UIViewController(), animated: true, completion: nil) present時のアニメーションですが、デフォルトでは下の4つが用意されています。 public enum UIModalTransitionStyl…
App Groupという仕組みを使って、アプリ同士のファイル共有を試してみました。 ちなみにApp Groupは自分が開発したアプリ間でないとデータ共有できないので注意が必要です。 下記事ではUserDefaultsの共有を試したので、今回はファイル共有を試してみようと…
SKStoreReviewControllerを使ったレビュー依頼を試してみました。 SKStoreReviewControllerとは SKStoreReviewControllerとはiOS10.3で登場したレビュー依頼のクラスで、ユーザーが簡単にレビューを行う事ができます。 ユーザーがレビューしやすくなる半面、…
前回に続いて、CoreImageのCICategoryColorAdjustmentフィルターを試してみました。 CoreImageのフィルターを試してみる(CICategoryBlur) - しめ鯖日記 今回も画像はぱくたそ様のものを使わせて頂きました。 画像表示処理は下の通りです。 import UIKit clas…
SCLAlertViewというライブラリを試してみました。 github.com まずはCocoaPodsでインストールします。 target 'MyApp' do use_frameworks! pod 'SCLAlertView-Objective-C' end 使い方は下の通りです。 showInfoメソッドで、Infoマーク付きのポップアップを5…
こちらの記事を読んで、IndexPathをIntの配列リテラルから生成したりIndexPathとInt配列の比較ができる事を知りました。 今回はなぜこのような事ができるかを調べてみました。 [iOS][Swift] IndexPathはInt配列リテラルから作れる。Int配列リテラルとの比較…
iOS11ではWebViewのスクロールがスムーズになった気がするので調査してみました。 調査対象はWKWebViewとUIWebViewです。 各OSで、スクロールの減速スピードを表すdecelerationRateの値を比較してみました。 この値が小さいほど、スクロールが早く停止します…
CoreImageを使うと、簡単に画像にフィルターをかける事ができます。 今回はCoreImageで用意されているフィルターをいくつか試してみました。 元画像は下のものです、画像はぱくたそ様のものを使っています。 import UIKit class ViewController: UIViewContr…
Swift3では様々なクラス名のプレフィックスがなくなり、NSUserDefaults→UserDefaultsなどのようにクラス名が変更になりました。 今回は、その影響で自分の定義したクラス名と標準クラス名が被った場合の対処法について記載します。 例えばUserDefaultsではFo…
iOS10からopenURLが非推奨になったので、新しいメソッドに置き換えました。 旧記法 UIApplication.shared.openURL(URL(string: "https://google.co.jp")!) 新記法 UIApplication.shared.open(URL(string: "https://google.co.jp")!, options: [:], completio…
今更ながら、Swift Playgroundsをしっかりと使ってみました。 Swift Playgrounds とは Swiftを簡単に実行できる環境です。 書いたコードがすぐに実行されるので、簡単なコードを試したい時などに向いています。 Playgroundを使ってみる PlaygroundはGet star…
Date → DateComponentsの変換とDateComponents → Dateの変換について調べてみました。 Date → DateComponents 下のようにCalendarを使うとDateComponentsを取得できます。 let date = Date() let components = Calendar.current.dateComponents(in: TimeZone…
アクションシートで外側のビュー(下の灰色部分)を押された時のイベント周りについて調べてみました。 キャンセルボタンがある場合、外側のビューを押すとアクションシートは閉じます。 その際、キャンセルボタンが押された時と同じ処理が呼び出されます。 im…
Storyboardにある、Referencing Outlet Collectionというものを試してみました。 Referencing Outletsはいつも使うのですが、Referencing Outlet Collectionは触ったことがないので一度使ってみました。 最初にStoryboard上で複数のUILabelを配置します。 次…
表題のエラーの対処法です。 調べたところ、開発者アカウントでFacebookにログインすれば大丈夫との記事があったんですがそれでは動きませんでした。 自分の場合は「iOS10のiPhoneの設定アプリでFacebookにログイン」 → 「Facebookアプリをインストールして…
ナビゲーションバーの背景を画像にしてみました。 画像は下のフリー素材を使っています。 青色のざらざらした紙のテクスチャ素材 | Paper-co | 紙のテクスチャー素材を無料でダウンロードできるサイト バーに背景画像を設定する方法は下の通りです。 titleTe…
iMovieを使ってAppstoreに掲載する動画を作ってみました。 まずはQuickTime Playerの新規ムービー収録でiPhoneの動画を作成します。 作った動画を保存します。 次はその動画をiMovieで編集します。 iMovieを立ち上げて「新規アプリケーションプレビュー」を…
ゲームフレームワークであるSpriteKitのSKLightNodeを使って、画面にライトを追加してみました。 まずは新規プロジェクト作成からゲームを選択します。 プロジェクトを作成したら、GameViewController.swiftを以下のようにします。 サンプルコードを削除して…
SpriteKitで繰り返し画像を背景に使う方法です。 元の画像素材は下のようなものです。 今回はこれを画面全体に繰り返し配置しました。 実際のコードは下の通りです。 まずはCoreGraphicsを使って、画面と同じサイズの繰り返し画像を生成。それをSKSpriteNode…
表題のエラーが出た時の対処法です。 下のようにSpriteKitで独自Sceneを定義してそれを呼び出した時に発生しました。 let scene = StartScene() class StartScene: SKScene { override init() { super.init() } required init?(coder aDecoder: NSCoder) { f…
AVFoundationを使って音を鳴らしてみました。 まずは下のようにAssets.xcassetsにmp3ファイルを追加して下さい。 追加したデータは、下のようにNSDataAssetを使って取り出す事ができます。 let sound = NSDataAsset(name: "sound") sound.data // → Data型、…
ALRTというライブラリを使って、UIAlertControllerを短く書いてみました。 とても便利なライブラリだったので、今後は積極的に使っていきたいと思います。 github.com 作った方の記事はこちらです。 qiita.com インストール CocoaPodsでインストールしました…
アプリ間でデータを共有できる、App Groupを試してみました。 UserDefaultsのデータとファイルが共有可能です。 ただし自分が開発したアプリ同士でないと共有できないので注意が必要です。 まずは下のように、アプリを2つ作成します。 最初にMyApp1でデータ…
SceneKitで利用できる図形を実際に配置して見ました。 対象クラスは下ドキュメントを参考にしました。 Built-in Geometry Types | Apple Developer Documentation SCNBox 立方体を生成するクラスです。 x, y, z を変更できます。 SCNFloor 名前の通り床とし…
ファイルから画像を読み込むアプリでうまく画像表示できない事がありました。 class ViewController: UIViewController { var imageView = UIImageView() override func viewDidLoad() { super.viewDidLoad() // 画像をファイルに保存 let path = "\(NSSearc…
UIImagePickerControllerを使ったカメラロールの操作を試してみました。 ImagePickerの表示 まずはカメラロールの操作の為に、Info.plistにNSPhotoLibraryUsageDescriptionというキーを追加します。 ここにはカメラロールの利用目的を書きます。 ここに書か…
表題のエラーが出た時の対処法です。 今回は下のように画像をファイル保存をしようとしたら発生しました。 let path = "/xxx/yyy/zzz" let image = UIImage() let data = UIImageJPEGRepresentation(image, 80) if let url = URL(string: path) { try? data?…
UIViewでinitializerを実装すると、init?(coder aDecoder: NSCoder)も実装するように言われます。 今回はinit?(coder aDecoder: NSCoder)と言われる理由などを調べてみます。 init?(coder aDecoder: NSCoder)とはなにか init?(coder aDecoder: NSCoder)はNSC…
表題の件について調べてみました。 NSNotification.Name.UIApplicationDidBecomeActiveはNotificationに渡す変数で、アプリ立ち上げ時に特定のメソッドを呼びたい時などに利用します。 // アプリがアクティブになった時にtestというメソッドを呼び出す Notif…