酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

開発

バージョン0.2 PreviewになったWindows Bridge for iOSを使ってみた

唐突にWindows Bridge for iOSのことを思い出しました。 Windows Bridge for iOSは、Objective-Cで書かれたiOSアプリをWindowsで使えるようにするプロジェクトの名称です。 Build 2015で発表された当時、Project Islandwoodと呼ばれていました。2015年8月にW…

UIScrollView#scrollViewDidZoomが呼ばれなくなった

Swift 1.xの頃からメンテしているアプリがあって、コンテンツのアップデートを兼ねてSwift 3に更新しました。いきなりSwift 3に上げたのではなくて一応Swift 2.3からのアップデートになります。 そのアプリの、とある画面でズームイン・ズームアウトする機能…

Swiftで角丸・背景透過・枠線のボタンを作る

メモするまでもないかもしれないけれど、こんな感じのボタンを作った。 Swiftで角丸背景透過枠線のみのボタンを作る カスタムviewを使った。 import UIKit class MyRoundButton : UIButton { override func awakeFromNib() { super.awakeFromNib() setTitleC…

iOSのAutoLayoutで複数行テキストのボタンが正しく改行されない

複数行テキストのボタンをAutoLayoutで配置したら、テキスト量によって改行するボタンを作りたかったんだけど、ハマってしまって改行してくれないボタンになってしまった。 作りとしては、UITableViewに改行ボタンを配置したカスタムセルを表示しているだけ…

iOSアプリでFirebase.Storageから画像をダウンロードする

前回の続きから。 let imageKey = "" let storageRef = FIRStorage.storage().reference(forURL: "gs://appname-xxx.appspot.com") let imageRef = storageRef.child(imageKey) imageRef.data(withMaxSize: 2 * 1024 * 1024, completion: { (data, error) in…

iOSアプリでFirebase.Storageに画像をアップロードする

Firebase.Authと一緒に使用します。 //一律jpegにしてもいいかもしれないね let image = getImage() let data = UIImageJPEGRepresentation(image, 90)! let imageKey = "images/main_image.jpg" let storageRef = FIRStorage.storage().reference(forURL: "…

iOSアプリでFirebase.Authに匿名サインインする

アプリを使う上で必ずしもユーザーの詳細情報は必要ないけれど、ユニークユーザーとして管理はしたい場合があります。 ショッピングアプリの場合、商品をお気に入り登録したりカートに入れるところまではユーザー登録なしでおこない、実際に購入する段階にな…

iOSアプリにFirebase.RemoteConfigを導入する

本記事ではiOSアプリにFirebase.RemoteConfigを導入した際にしたことを紹介します。メモなのでそのまま運用できないかもしれません。 たとえば、ユーザーにアップデートを促す際にアラートを表示させます。 アラートの表示条件としては、ウェブに置いている…

iOSアプリにFirebaseを導入する

Firebaseにはいくつかのサービスがあって、それぞれがライブラリの形でCocoaPodsに提供されています。CocoaPods経由でインストールすることができるのでPodfileに1行追記するだけで済みます。 Firebaseを導入する 「Firebase」でログインして、プロジェクト…

Swift 3.0対応は大変だった

Xcode 6.3か6.4の時代に作ったiOSアプリがあってメンテしているんですけれど、iOS 7.xに対応する必要がありCocoaPodsも0.39*1環境でしか使えず、Podfileのuse_frameworks!も使えませんでした。 最近、deploy targetの見直しがあってようやくiOS 7.xを外すこ…

Xcode 8のiOS 10シミュレータを使っているとFacebook SDKの認証に失敗する

Firebase.Authを使ってFacebookログインの実装をしていたのですが、iOS 10でFacebook SDKの認証が通らなくなってしまって焦りました。 (追記)この現象はXcode 8のシミュレータ限定の現象のようです。stackoverflowでも同じ問題に悩んでいる方がいました。 エ…

SVGKitをアップデートしたらLOG_LEVEL_VERBOSEの定義がなくてビルドができない

ikatomoは数多くのサードパーティー製のライブラリを使用しています。 ikatomoをSwift 3.0へアップデートさせようと考えました。しかし、ライブラリの多くはSwift 3.0対応中で現時点での移行は難しそうです。 となればikatomoの更新作業は放置でも良いのです…

SwiftでRGBからHSVへ変換する

RGBの値をHSVの値に変換するためのコードを書きました。大昔にC#で書いた処理をSwiftに移植しました。 説明は上記の記事をご覧ください。以下、HSVクラスです。 class HSV { //色相 var hue: Double = 0 //彩度 var saturation: Double = 0 //明度 var value…

Pokétomoで稀にカイロスがキャタピーと誤認識されてしまう問題

Pokémon GO用のポケモンの個体値を計算するアプリを作っています。 (公開停止しました) Pokétomoではスクリーンショットを解析して個体値を求めるのですが、今回稀にカイロスがキャタピーと誤認識されてしまう問題についてメモしておきたいと思います。 個体…

iPhone 4sだとCIDetectorが使えない

iPhone 4sだとCIDetectorが使えません。APIとしては存在しているのですが、detector.featuresInImage(img)で常にnilが返されます。 少し悩んだのですが、フォーラムに同じ問題で悩んでいる方がいました。 CIDetector doesn’t work for QR-code detection o..…

Androidアプリのビルドで「Unsupported major.minor version 52.0」のビルドエラーが発生する

Jenkinsを使ってアプリをビルドをしているのですが、この2ヶ月間少し毛色の違うプロジェクトをやっていたこともあって、ビルドサーバーのジョブは増えていませんでした。 久しぶりにAndroidアプリのビルドジョブを追加すると、見たことのないタイプのエラー…

「Windows Bridge for iOS」でUITableViewを使ったiOSアプリを変換できるのか試してみる その2

Windows Bridge for iOSは、Objective-Cで書かれたiOSアプリをWindowsアプリに変換するソリューションです。詳しくはこちらの記事を御覧ください。 UITableViewを使ったサンプルアプリをWindows Bridge for iOS SDKで変換して、きちんとWindows側で再現でき…

「Windows Bridge for iOS」でUITableViewを使ったiOSアプリを変換できるのか試してみる

引き続きWindows Bridge for iOSネタです。 Windows Bridge for iOSは、Objective-Cで書かれたiOSアプリをWindowsアプリに変換するソリューションです。詳しくはこちらの記事を御覧ください。 さて今回は、UITableViewを扱えるのかを試してみたいと思います…

機能強化された「Windows Bridge for iOS」でiOSアプリをWindowsアプリに変換してみる

「Windows Bridge for iOS」が機能強化されたという情報が入ってきました。新しいバージョンではAutoLayoutに対応したようです。 iOS用Windowsブリッジチームはこのほど、CoreFoundationの正式な実装をWinObjCコードベースに統合し、完全なCoreFoundation及…

MacでiOSとAndroid用のアイコンを1024x1024のストア申請用の画像からスクリプトで一気に作成する

とあるプロジェクトでiOS/Androidそれぞれに対応したアプリを開発しているのですが、アイコン用にストア申請用の1024x1024の画像をいただきました。 たかだか十数枚なのでペイントツールを使って1枚1枚手作業で縮小しても構わなかったのですが、微調整が入る…

Xcode 7でビルドしたアプリをApplication Loaderを使って申請するとInvalid Swift Supportが発生する

Jenkinsからxcodebuildを使ってipaファイルを生成します。Application Loaderを使ってipaファイルをアップロードするとInvalid Swift Supportが発生したとメールが送られてきます。 Appleから送られてくるメール Application Loaderを使ってアップロードする…

iOS 9でHeiti TC/SCが使えなくなっている

すこし前にHeiti SCを指定しているはずなのに意図通りフォントが表示されていないことがありました。調べてみたらiOS 9ではHeiti TC/SCが使えなくなっていることがわかりました。 フォント名 Heiti TC STHeitiTC-Light STHeitiTC-Medium Heiti SC STHeitiSC-…

MacからAWS EC2のAmazon LinuxにSSHで接続する

AWS EC2(Amazon Linux AMI)で新しいインスタンスを作成するとec2-userというユーザーが作成されます。Amazon Linuxの場合にはデフォルトでec2-userですが、それ以外のAMIの場合には異なることがあるようなので別途確認してみてください。 MacからSSH接続する…

Amazon Linuxでec2-userと同じ鍵を使ってrootで直接ログインできるようにする

AWS EC2(Amazon Linux AMI)で新しいインスタンスを作成するとec2-userというユーザーが作成されます。Amazon Linuxの場合にはデフォルトでec2-userですが、それ以外のAMIの場合には異なることがあるようなので別途確認してみてください。 インスタンス作成後…

EC2 Amazon Linuxで`knife solo cook`を実行しようとするとrsyncで失敗する

EC2のAmazon Linuxでknife solo cookを実行しようとすると、rsyncで失敗してしまう現象が発生していました。 何故エラーが発生しているのか理解できなかったので解決まで時間がかかってしまいました。 実行環境 クライアント側 Mac OS X El Capitan(10.11.3)…

入門Chef Soloを読んでます

突然ですがChefの勉強を始めました。 ネットで調べてみようと思ったのですがQiitaみたく断片的なTipsであればたくさん記事があるのですが、なにせ右も左も分からないので体系的に書かれているサイトがなくて困りました。 そこで調べてみたところ猛烈にプッシ…

Realm Swiftを使って複数の条件でソート(並べ替え)する

本記事ではRealm Swiftを使って複数条件でソートする方法を紹介します。使用しているRealm Swiftのバージョンは0.97.0です。 Realm Javaでの複数条件のソートしたい場合、「Realm Javaを使って複数の条件でソート(並べ替え)する - 酢ろぐ!」の記事をご覧く…

SwiftでToday Extensionのデバイスの向きを判定する

少し前のエントリ「SwiftでToday Extensionの高さをUITableViewの高さに合わせる」で、Widgetの高さの上限値は「アプリ名のセクションを含めてWidgetが1画面で収まる高さ」と書いておきながら、デバイスを横にした時の処理を忘れていました。 下図は、現在開…

SwiftでSDWebImageを使ってダンロードした画像を加工してUIImageViewに表示する

iOSでネットワーク上のリソースをUIImageViewに表示するライブラリに「SDWebImage」というものがあります。導入方法については以下の記事で紹介しました。 SDWebImageを使ってUIImageViewに画像を表示させるには下記のように書くことができます。 // import …

SwiftでUIColorの色を一段階暗くする

// 一段階暗くする var color: UIColor = UIColor.redColor() var hue : CGFloat = 0 var saturation : CGFloat = 0 var brightness : CGFloat = 0 var alpha : CGFloat = 0 if color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha…