2017-09-01から1ヶ月間の記事一覧
SwiftのdidSetの呼ばれるタイミングを調べてみました。 didSetとは プロパティーの値セットを検知する仕組みです。 下のように書くことで、プロパティーに値がセットされたタイミングを検知する事ができます。 class MainClass { var value: Int? { didSet {…
MacでGNU Goという囲碁ソフトを動かしてみました。 brewに対応しているので、インストールはコマンド1行でできます。 brew install gnu-go 実行はgnugoコマンドを打つだけです。 そのあとはQ16のような形で位置を指定すれば遊ぶ事ができます。 白番を取りた…
iOS9から登場したUIStackViewを試してみました。 UIStackViewでUIViewを均等配置 まずはUIStackViewを配置します。 縦方向と横方向があるのですが、今回は横方向に配置しました。 UIStackViewは下のように画面に配置しました。 続けてUIViewを2つ配置します…
GPUImageというライブラリを使って、カメラ映像にリアルタイムでフィルターをかける事を試してみました。 github.com まずはCocoaPodsでGPUImageをインストールします。 target 'MyApp' do use_frameworks! pod 'GPUImage' end 次はInfo.plistのNSCameraUsag…
AVAudioEngineというクラスを使って、mp3をエフェクト付きで再生してみました。 まずはプロジェクトにmp3ファイルを追加します。 追加したファイルがBuild Phasesにも入っているか確認します。 入っていない場合は+ボタンからmp3を追加します。 まずは普通に…
Phones.frameworkを使って、端末の写真の取得・保存・削除を試してみました。 写真を操作する前にInfo.plistにNSPhotoLibraryUsageDescriptionに写真を操作する理由を記述します。 これがないとアプリがクラッシュします。 取得 端末写真をUIImageとして取得…
スクリーンショットを撮ったタイミングを検知するには.UIApplicationUserDidTakeScreenshotを使います。 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selec…
最近はGoogleAnalyticsプロパティー作成時にモバイルアプリを選ぶとFirebase一択になりました。 今日はモバイルアプリでもFirebaseなしのGoogleAnalyticsを使う方法を書いてみます。 まずはウェブサイトとしてプロパティーを作成します。 続けてそのプロパテ…
push遷移アニメーションが下のように斜めになってしまったので対策を調べてみました。 stackoverflowによると、遷移先のviewDidLoadでtableViewのcontentInsetAdjustmentBehaviorを.neverにすれば良いとのことでした。 popViewControllerの時のアニメーショ…
NSLinguisticTaggerというクラスで形態素解析ができるようなので試してみました。 import UIKit let text = "I have a beautiful pen." let tagger = NSLinguisticTagger(tagSchemes: NSLinguisticTagger.availableTagSchemes(forLanguage: "en"), options: …
アプリの高速化のため、UIViewのdraw(rect:)が呼ばれるタイミングを調べてみました。 下のように、普通に画面に貼り付ける時はdraw(rect:)が呼ばれました。 import UIKit class ViewController: UIViewController { let myView = MyView(frame: UIScreen.mai…
Google提供のyoutube-ios-player-helperを使って、Youtubeの動画をアプリ内で再生してみました。 github.com Googleのドキュメントはこちらです。 https://developers.google.com/youtube/v3/guides/ios_youtube_helper インストール CocoaPodsでインストー…
下記事の続きです。 今回もフィルターを使った画像加工を試してみました。 www.cl9.info 今回はCICategoryColorAdjustmentのCILinearToSRGBToneCurve以降を見ていきます。 Core Image Filter Reference 実装内容は前回同様、以下のようになります。 import U…
ActionSegueの動作を確認してみました。 UINavigationControllerにセットされているController まずは、下のようにUINavigationControllerにセットされているControllerからのSegueの挙動を確認してみました。 Show UINavigationControllerのpushメソッドを…
iOS11からはSocial.frameworkによるツイートができなくなり、代わりにTwitterKitが推奨されています。 今回はTwitterKitを使って投稿する方法を試してみます。 iOS11でSocial.frameworkを使った時の挙動 下のようにテキストをツイートする実装をしました。 i…
下の続きになります。 www.cl9.info 今回もCoreImageのフィルターを使って画像加工を実装していきます。 フィルターはCICategoryColorAdjustmentのCIColorPolynomial以降を見ていきます。 https://developer.apple.com/library/content/documentation/Graphi…
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…
Git LFSというものを試してみました。 環境はMacのOS 10.12.6です。 Git LFSとは Git LFSとはGit Large File Storageの略で、大容量ファイルの扱い用のファイルです。 公式サイトは以下になります。 git-lfs.github.com Git LFSを試してみる brewを使ってlfs…
ウォーキングによる消費カロリーの計算方法について調べてみました。 今回は以下の書類を参考にしました。 運動基準・運動指針の改定に関する検討会 報告書 運動による消費カロリーの計算式 消費カロリーは以下の式で表されます。 メッツは運動強度の単位で…
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…