ラベル coding の投稿を表示しています。 すべての投稿を表示
ラベル coding の投稿を表示しています。 すべての投稿を表示

2017年10月26日木曜日

ハマったことシリーズ No19 今回も、開発の細かな話です。ハマったシリーズNo18では、UILabelに影付き文字列を設定していてハマった話をしましたが、今度はフォントによってUILabelが欠ける(特に、斜体系の場合)という現象に出くわした話です。 影付き文字列なので前後にスペース文字列を足して影の領域を確保していました。 左揃えの場合は、ちゃんと影もクロッピングされず綺麗に表示されています。 しかし、右揃えの場合は、文字が途中でクロッピングされてしまいます。スペース文字の個数などを増やしても表示に変化がありません。 なぜだ?? ということで、Debug view Hierarchyで見てみると、右揃えの場合、末端のスペース文字(全角・半角とも)が無視されるようです。(怒!! w) Google先生に伺っても聞き方が悪いのかお答えが聞けず 散々悩んだ末、透明の文字列を末尾に追加することにしました。 let...

2017年6月29日木曜日

ハマったことシリーズ No18. 今回も、開発の細かな話です。アトリビュート付の文字列の描画がとても遅いという現象に出くわしました。 やろうとしていた状況としては、40個位のUILabelがあって、それらに影つき文字列を設定しました。 その文字列の生成は、 let shadow = NSShadow() shadow.shadowColor = .black shadow.shadowBlurRadius = offset let aStr = NSMutableAttributedStrings(string:"text") aStr.addAttributes([NSShadowAttributeName:shadow], range: NSMakeRange(0, aStr.length)) という感じで作っていましたが、表示がえらく遅い。。。 この表示が遅い...

2017年3月16日木曜日

ハマったことシリーズ No17. 今回は、Swiftでの開発で文字コードを文字に変換するという細かい話です。 文字コードから文字へ変換する場合、 "\u{2665}"という記述で文字コードを指定します。 これは知っていたのですが、はじめて実際に使いました。 そこでドハマリしました。 なぜか、思った文字が出ない。 原因は… \u{nnnn}は 0xとかつけなければ10進数かと思っていたのです。 強制的に16進数だったとは! いや~ お恥ずかしいw...

2016年9月7日水曜日

ハマったことシリーズ No16. 今回は、Stroryboardで UIScrollViewを貼ったときに 不要な余白が入っちゃったお話です。 ヘルプ的なものを縦に長い画像で作り、それを縦スクロールで見てもらうことにしました。 このくらいはコード不要で出来るかなと調べると、とても参考になる記事が! ありがたや。  [iOS] Storyboard上で UIScrollViewを設定する 基本的には このとおりやれば出来ます。 少し悩んだのが、UIImageViewの"高さ"の制約。 画像は事前に用意したものですが、参考記事のように高さの制約を絶対値で入れると、画像のアスペクト比が狂ってしまいます。UIImageViewにAspectFillを設定してもAutolayoutの計算には使ってくれないようで、UIImageViewのAspect比の制約を自分でちゃんと設定する必要があります。 これで出来上がりと思ったら、上部に不思議な余白が。。。  UIScrollViewの地色が見えていました。 UIScrollViewの上部制約をいつもの調子で...

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",...

2016年8月24日水曜日

ハマったことシリーズ No13. 今回は、UITextFieldのinputView に穴のあいたキーボードを設定しようとした話しです。 下のUIButtonが操作できるように、穴があいているキーボードをUIViewを継承して作ろうと思いました。 穴の部分は、そのUIView自体で、色をclearColorにして、タッチイベントをnextResponderに伝えようにしすればいいかなと。 穴でない部分は、普通のボタンなどを貼るつもりでした。 が、実際に作ってみると、ダメじゃん!!  穴ない(ブラー??)、タッチイベントも通らない。 きっと、下地として UIViewがあるんですね。  つまり、この方法はムリっぽいのね。 自力でやるしかないか。...
ハマったことシリーズ No14. 今回は、複数Macでの開発に伴う試行錯誤の覚書です。 証明書のコピー iPhone Developper、iPhone Distribution、appleid.prd××の証明書を 現行Macから新Macへ書き出し&インポート参考:iOSアプリ開発で実機による開発を複数台(メイン機ではない2台目以降)の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+...

2015年1月21日水曜日

今回は、お勉強中のプログラミングの話。 レスポンシブとかアダプティブとかが流行ってるし(細かな違いは分かってないのですがw)、iOSのプログラミングもマルチ解像度時代ということで、ぼやっとしか理解できていなかったAutolayoutをお勉強しました。 かなり個人的なメモですが、いろいろ先人の情報を見て やっと腑に落ちたので公開します。 PinだとかAlignとかイロイロあるけど、分かりやすい解説はいっぱいあるし(例えばこれ)、バラバラには分かる。 分かるけど何か もやっ と引っかかっている。  理系なので、根底の原理原則のレベルで理解したい :-) どの制約も制約編集画面(「Attributes Inspector」)を見ると 「First item」、「Relation」、「Second Item」、「Multiplier」、「Constant」が出てくる。 結局、どの制約も最終的に...

2014年10月26日日曜日

こっそり、普段使いのシンプル電卓 malc(マルク)のバージョン: 1.21が公開になってます。 iPhone6/6Plusの画面解像度に最適化しました。 今日は、レビューへの誘導の話 ストアに★をつけてもらったり、コメントを書いてもらうレビューを書いてもらえたら、開発者として励みになるし、マーケティング効果も高いことは有名ですね。 有用なコメントをもらったり、好意的なレビューをしてもらうテクニックとして、レビューへの誘導タイミングや誘導方法が重要という情報もよく目にします。 いろいろ見てて、参考になる と思ったのは たとえば下記のようなWebページ ・レーティング誘導で好評価を貰うには ・アプリのレビュー評価はASOに効く! 「誘導は...

2014年10月13日月曜日

今回は まだ検討中のアプリの話 このアプリではいわゆる世界時計機能が必要なんです。 タイムゾーンが分かれば、日時を表示することは簡単。たとえば、America/Los_Angelesなら下記のようにすればできます。     NSDate* date = [NSDate date] ;     NSDateFormatter *formatter = [[NSDateFormatter alloc]init] ;     [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Los_Angeles"]] ;     [formatter setDateFormat:@"dd a HH:mm (zzz)"] ;  ...

2014年9月17日水曜日

週末に「普段使いのシンプル電卓 malc」 のバージョンアップ申請をしました。 iOS8対応、iPhone6対応を含む多くの機能強化、新しいiTunesConnect と 盛りだくさんのアップデートです。 (申請しちゃったら、あとは すんなりレビューを通ってくれることを祈るしかありません) さて、今回は、キーボードの進化について きっかけはACキーとBSキーの切り替える機会が多くて面倒だったこと。これを何とかできないかを考え始めました。 最初の思いつきでは、 ACキーとBSキーを縦に並べ、その代わりにカーソルキーとして使うキーを1つに減らす  カーソルキーを長押ししたら、すぐ上に、4つのカーソルキーすべてが表示される という仕様でした。これならACキーとBSキーはとても使いやすくなります。 ただ、色を変える上下キーは滅多に使わないけど、左右キーは良く使うし同時に使う事が多いので、切り替えは面倒そう。 ということでボツにしました。 さきほどのアイディアを改良して、OS標準の日本語入力キーボードのように、フリック入力する方法で解決しようと思いました。 長押しで、キーの上下左右に、隠れていた上下左右のカーソルキーが表示される 表示前でもフリックで入力できる という仕様です。 ただ、カーソルキーを左端や右端に置けなくなるのでボツ。 ここでいったん検討のキッカケまで戻って、なぜACキーとBSキーを切り替える機会が多いのかを考えました。  まず答えを求めた直後に、ACを使うことが多いのは想定どおり(ここはACが表示されているのでOK)。 問題は、答えの数字を再利用しないのに、続けて数字をまちがって打ってしまった場合にACを使うこと、しかもその頻度が多いことだと気が付きました(その場合は、BSキー表示から...

2014年9月13日土曜日

今回は、UIWebViewがロードに失敗する現象についてです。 iOS8 で事前に遊べるXcoce 6 GM seedで、いままで動作していた以下のコードがfailする [myWebView loadRequest:[NSURLRequest requestWithURL:url      cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]] ; 具体的には、iOS8環境では、1回目は上手く動いたあと、Xcodeで停止し 再度プログラムを起動すると - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error が呼び出されてしまいます。(他のOSバージョンならちゃんと動く) エラー内容は code:-1100...

2014年5月24日土曜日

ハマったことシリーズ No12. 今回は、UIWebViewのキャッシュの話しです。 いままでUIImageなどで作っていた部品をクラウド上に置いておいて、自由に画像を差し替えられるようにしたい。 なので、UIWebViewのキャッシュを使う事を考えました。 いろいろググっていると、iOS5からUIWebViewのキャッシュはディスク上にも保存される という記事を見つけ、できることを確認し、コーディング。 [myWebView loadRequest:[NSURLRequest requestWithURL:url      cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]] ; という感じにしておけば、オフラインでも画像表示でき、オンライン状態であれば 画像の差し替えもできるはず。 さぁテスト! ここでハマリました。 そう、ぜんぜんキャッシュされない。  原因は、iOSシミュレータのバグ?でした。...

2014年5月21日水曜日

ハマったことシリーズ No11. 今回は、「UIViewControllerは、まず消える!?」です。  プログラマ以外の方には、意味不明のお話です。 自分の画面のためのクラスは、UIViewControllerを継承して作るお作法ですよね? その元のUIViewControllerの標準メソッドの (void)viewWillDisappear:(Bool)animated のお話。 これ、画面が表示されるときに viewDidLoadの後に呼ばれることがあるのです。 ていうか自分で呼んでましたww。当然、通常は呼ばれないようですが、拾ってきたカスタムセグウェイの中で、一度rootViewControllerに設定して回転方向の修正をし、再度独自トランジッションをかけていたのです。 これでハマリました。 viewDidLoadで、addObserver: forKeyPath:...

2014年1月8日水曜日

カラバリ  後付でカラーバリエーションをつけることにしました。つまり、キーボード、メモリーの部分の色をいろいろ変えられるようにしようと。   パーツがいっぱいあるので、それぞれ色を変えるのは結構面倒です。 しかも実は、一色というわけにはいきません。メモリーは視認性が悪くならないように縞々にしています。  その面倒を解決する工夫としては、キーボードと メモリーのパーツは 非常に透明度が高い白や黒で着色しています。 つまり、それらを通して一番裏のUIViewが見えているわけです。 なので、このUIView1つだけの色を変えればよいわけです。 (実際には、入力中の計算式の表示エリアの文字色も変えてます)  5cのカラバリに合わせ、malcは...

2013年12月18日水曜日

コーディングスタート  設計ができたので、そろそろコーディング開始です。  まずは電卓なので、数式から答えを求める計算ロジックを作ります。 折角なのでw、ちゃんと優先順位つきのものが作りたい。1+3*3が先に足し算をして12になる電卓もあるけど、算数のルールどおりに掛け算を先に実行して10になってほしい。  Rubyなら文字列で式を渡せば計算してくれたりしますが、どうやらそんな都合よいことはないので、自力で作ることになります。  すぐに思いだしたのは、yacc, lex。大学の授業の課題で電卓作りました。 探せばソースもあるだろし、C言語なので使えると思うけど、コードが大きくなりそうな気がするのでボツに。  次に思い出したのは、forthというか逆ポーランド計算(RPN)。懐かしいとか思いながら、これで作ることにしました。 通常の式からRPNに変換するために、2状態のオートマトンとス...

2013年12月15日日曜日

今回は、iPadのプログラマーな方むけのとっても技術的なハナシです iPadのUIPopoverを できるだけStoryboardを有効活用して作る場合のお話です。 (なお、Storyboardを使わないパターンは UIPopoverControllerチュートリアル その2 などが参考になりました。) 以下が最善の策かは分かりませんが、とりあえず動いているし、いろいろググって調べたものと比較しても簡単です。 ■StoryboardでUIPopoverを設定する SegueにIdをつけて、StyelはPopoverを選びます。これで接続されたUIViewController(destinationViewController)が Popoverで開きます。 でも、これだけだと 自分自身の多重起動も含め、同時に二つ以上のPopoverが表示されます。 閉じるボタンを作れない という問題があります。 ■Popoverを呼び出す...

2013年10月25日金曜日

先日、 iPhonePLUSにも載ってウキウキですw 今回は、crenieqの新アプリ誕生!malc(マルク)でもご紹介した「シンプル電卓 malc」の開発日記的なものを書きたいと思います。 はじまり  なぜ電卓を作り始めようと思ったか。。。 なんでだっけ?w (オイ!)  作りかけがいくつかあって、それぞれそれなりに進んでるけど未完成。 達成感を味わってモチベーションを維持したい! と考えて、簡単に完成しそうなネタとして選んだのがはじまりでしょうか。。。  といっても、たとえ小さくても、新しいアイディアがなければ作る意味がない! 第一楽しく作れない!ということで、メモリー機能を簡単な概念にする方法を思いついたからかもしれません。 電卓によくあるメモリー機能。M+とかM-とか、分かりにくい機能という気がしませんか? エンジニア視点からすると 理解はできるですが、あらた...

2012年10月13日土曜日

サポータルは、デザイナーさんが作ってくれた、とても綺麗なアイコンや背景、カスタムボタン、応援メッセージなどが一つのウリです。(連載している使い方解説を見てみて下さい。) それらを沢山配置するのに、作ってもらったpngファイルのリソースファイルを使うわけですが、実機だけ表示できない という現象が起きました。 シミュレータではちゃんと表示されていたのに。。。。 転送ミスを疑い、cleanして再度ビルドしてもダメ。。。  というわけで、これもハマりました。 結論から言うと、「シミュレータはリソースファイル名の大文字小文字を区別しない」 実機はファイル名の大文字小文字を区別するのに、シミュレータはしない。 ...