2016年11月4日金曜日

また新しいアプリをストア公開しました。 タイマーアプリです。

今回は、このアプリのメイキングオブ的なお話です。


実は、はじめからタイマーアプリを作りたかった訳ではないのです ^^;;

別なアプリを考えている時に、数字の入力方法の新しいUIを思いつきました。
新しいUIというのは、ボタンです。 タップするとボタンに書かれた数字が入力できます。 そして、ドラッグすると大きくなり、大きくなるにつれて、入力できる数字も大きくなります。 その状態で指を離すと その時の数字が入力されます。
あまり見たことがない操作方法なので、ドラッグ&リリースとか勝手な名前を付けています。^^;;

先ほどのアプリ自体は、行き詰ったというか、少し飽きてほったらかしです。(最近、そのパターンが増えましたww)
でも、このUIを試してみたくて、簡単に作れそうで、数字の入力が主であるモノとしてタイマーを思いついたという次第です。




流石に、これだけでは つまらないので、タイマー自体の機能も少し工夫してみました。
タイマーって、スタートさせると、一時停止ぐらいしかできませんよね? それを、カウントダウン中にも 時間を調整できるようにしてみました。
出来上がって自分で使ってみると、この逆転が ちょっとキモチいい。 とりあえず、タイマーを開始して、それから何分にするかをゆっくり考えられる。 ただそれだけなのに、ラクちんなんです。


という訳で タイマーアプリができました。
いつものように無料アプリですので、よろしければ是非お試しください。

2016年9月7日水曜日

ハマったことシリーズ No16.

今回は、Stroryboardで UIScrollViewを貼ったときに 不要な余白が入っちゃったお話です。

ヘルプ的なものを縦に長い画像で作り、それを縦スクロールで見てもらうことにしました。 このくらいはコード不要で出来るかなと調べると、とても参考になる記事が! ありがたや。
 [iOS] Storyboard上で UIScrollViewを設定する

基本的には このとおりやれば出来ます。 少し悩んだのが、UIImageViewの"高さ"の制約。 画像は事前に用意したものですが、参考記事のように高さの制約を絶対値で入れると、画像のアスペクト比が狂ってしまいます。UIImageViewにAspectFillを設定してもAutolayoutの計算には使ってくれないようで、UIImageViewのAspect比の制約を自分でちゃんと設定する必要があります。

これで出来上がりと思ったら、上部に不思議な余白が。。。  UIScrollViewの地色が見えていました。
UIScrollViewの上部制約をいつもの調子で Top Layout Guideに合わせたのが原因でした。 ただ、storyboard画面では綺麗にレイアウトされて見えるし、というか逆にSuperviewの上部に合わせると 下図のように 画像の上部が見えないし・・・、しばらく悩みました。

余白の高さは ナビゲーションバーの高さっぽいところでピンッと来て、試しにUIScrollViewの上部制約をSuperviewの上部に合わせてみると解決しました。

ナビバーがあるとUIViewControllerのルートに乗ってるUIViewが、縮み さらにTop Layout Guideの位置が、すなわち UIScrollViewの上部が下がるのでしょうかね?   っと言っても…、スクロールビューが下がり ルートViewが見えてるわけでもなく。。。。 ちょっと意味不明。  contentSizeとかがズレるのでしょうか。。。
ちょっと疑問点が残りますが、上手く行ったということでwww

2016年8月30日火曜日

今回は、iTunesConnectでのアプリスクリーンショットの簡易提出関連の覚書です。

iPhone、iPadとも最大サイズのスクリーンショットをアップロードすればよくなりました。

  • iPhoneは 5.5inch サイズの1242×2208
  • iPadは Proサイズの2048×2732

当然、最近はAutolayoutで作っているので、640x960、640x1136、750x1334、1242x2208、・・・などと解像度が違えば、表の表示個数が変わったり、細かな違いはあるものの大枠は同じです。 ありがたく使っちゃいましょう。(新しく作ったアプリが、ユーザの方にウケたら、イロイロ凝るという戦略もアリでしょうw) 

解像度の違うマシンも画面かも知れないことのヒントも兼ねて、iPhoneへのはめこみ合成をしましょう。  現在、LaunchKitが使えないので、そーいう時は iPhone Screenshot MakerなどでiPhoneへのはめ込み合成をします。
文字入れとか凝ったレイアウトなんかは power pointとか使うこともあります。 そのときは21.03cm×37.389cm(iPadは proの1/2サイズで17.37cm×23.13cm)の画像を作って、多少解像度が違うところは Macのプレビューでサイズ変更すのが楽ちん。 どうせ、プレビューの書き出しでαチャンネル無しにしたるするしねw


2016年8月26日金曜日

ハマったことシリーズ No15.

今回は、swiftでiOSのバージョンが特定値以上かを判定するお話です。

以下のようなコードで iOS8系か、iOS9系かを判定していました。
ios8VersionFlag = Float(UIDevice.currentDevice().systemVersion) < 9

しかし、バージョンが 9.1などならいいのですが、9.3.4などとなると Float("9.3.4")というのはFloatに変換できず、nilとなる。 つまり、(nil < 9)の結果として、Flagがtrueとなってしまい、障害の原因となっていました。(see→補足)
最終的には、こんなコードにしました。 これなら安心。
ios8VersionFlag = UIDevice.currentDevice().systemVersion.compare("9.0.0", options:.NumericSearch ) == .OrderedAscending

2016年8月24日水曜日

ハマったことシリーズ No13.

今回は、UITextFieldのinputView に穴のあいたキーボードを設定しようとした話しです。


下のUIButtonが操作できるように、穴があいているキーボードをUIViewを継承して作ろうと思いました。 穴の部分は、そのUIView自体で、色をclearColorにして、タッチイベントをnextResponderに伝えようにしすればいいかなと。
穴でない部分は、普通のボタンなどを貼るつもりでした。

が、実際に作ってみると、ダメじゃん!! 

穴ない(ブラー??)、タッチイベントも通らない。 きっと、下地として UIViewがあるんですね。 


つまり、この方法はムリっぽいのね。 自力でやるしかないか。。。

ハマったことシリーズ No14.

今回は、複数Macでの開発に伴う試行錯誤の覚書です。

証明書のコピー




Organaizerで、「何度も キーチェーンのアクセスのID/PW入力がでる現象」


  • iOS Developer、Apple IDの秘密鍵のアクセス制御を、「これらのアプリ~常に許可」に ”xcode”を指定
  • iOS Distributionの秘密鍵は xcodeで常にではなく、全てのアプリに許可にする。(なぜ?w)
  • 証明書は 信頼 > 「システムデフォルトを使用」 にしておかないと、iTMS-90034エラーが出る。(上記現象を直す試行錯誤として、「常に信頼に」したらダメだった)


2015年2月19日木曜日

今回は、プログラミング関係で 先人達に学んだことを、つらつらと。


●写真編集系アプリでよくある 他のアプリとの連携はどうすればいいか?
UIDocumentInteractionControllerは、instagramと他のアプリとの両立方法が難しかった。参考になるのはこれ!

Stackoverflowの記事「UIDocumentInteractionControllerDelegate methods not called when open system apps like Mail, Messages, Twitter or Facebook
この記事で、 instagramには 「**.ig」ファイルを 他のアプリには 「**.png」ファイルを渡せるようになります。 質問者と回答者が同じなのが面白いw
Option付き(presentOptionsMenuFromBarButtonItem+ documentInteractionControllerWillPresentOptionsMenu)だと、なぜか うまくいかない…

Cocoaの日々の記事「UIDocumentInteractionController にファイルを別名で渡す」
ファイルが二ついるのだけど、二つセーブするのは非効率なので。ハードリンク使えばいいじゃん!という思いつきにつながった記事。 結局うまくいかなかったけどww

※Instagramアプリが 拡張子igだけでなく pngなどをサポートすればすむことなのだけど。。。w
※UIActivityViewControllerは、出てくるアプリの数が少ない。 LINEやInstagramを加えるにはカスタムを追加しなければならない。。。


●Flurry SDKを Swiftから使う
アプリの分析を無償で出来ることで有名なサービス。知らなかったけど、Yahooが買収したのですね。

Qiitaの「iOSでFlurry Analyticsを使ってみる」
makotton.com の「iOSにFlurry SDKを導入する」
この2つの記事は Objective-Cの場合ですが iOSで Flurryを使う手順が書いてあります。

AdMax Tech Blog の「【iOS】BridgingHeaderの使い方と設定方法」
この記事は、Objective-Cのライブラリを Swiftから使えるようにする手順が書いてあります。


●SpriteKitを使っているときの Pauseの話
バックグラウンドからの復帰時などに Pauseしない。。。 という障害を直すのに参考になった情報のリストです。

CODE NINJAの「Pausing a Sprite Kit Game, Correctly」
この記事がパーフェクト! ほかにも下記のような記事がありました。
http://stackoverflow.com/questions/19014012/sprite-kit-the-right-way-to-multitask


stackoverflowの「Difference between paused property of SKScene and SKView」
これは、タイトルのままですが pauseプロパティを持つものが2つあるので 何が違うの?という話。

shinyaohira / App States and Multitasking.mdの「アプリの状態とマルチタスキング」
アプリの状態遷移の話。 AppDelegateの各関数がどのタイミングで呼ばれるか?という話。