酢ろぐ!

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

Swift

UICollectionViewの初期表示時にズレる

メモ。覚えていたらあとで説明を書く。ケアレスミスしてた。 UICollectionViewを幅MAXで使わない時に初期表示時にズレるのか? UITableViewCellの中にUICollectionViewを入れて使っている。 UICollectionView横スクロールしている。 pagingを有効にしていて…

OSXアプリのSwiftのNSImageで扱う

iOSでいうところのUIImageはOS XですとNSImageに該当します(たぶん)。 iOSアプリを作っているとUIImageはよく使うのでなんとなく扱えるようになりますが、Macアプリを使ったことがないためNSImageの方はよく分からず……調べながら実装したものをメモっておき…

はてなOAuthがちょっと使いにくいなと思った話

はてなOAuthがちょっと使いにくいなと思った話。 iOSではてなフォトライフに写真をアップロードするアプリを作りたいなと考えています。 はてなOAuthを使うのに最適な方法を考えているのですが思い付きませんでした。実際の最適解がよくわからないのでとりあ…

AutoLayout上でTTTAttributedLabelのリンク(下線)を使うと、iOS 7の場合に下線が一部欠けてしまう問題

UILabelの表示を豪華(?)にするライブラリのひとつに「TTTAttributedLabel」があります。 長文の途中でリンクを貼りたい場合……たとえば Twitterでリプライをもらった時に@ch3coohの部分だけリンクを貼りたいというニーズがあるかと思います。 TTTAttributedLa…

iOS 7.1.2でUIActionSheetに表示されている1番目の項目を選択しても何も実行されない

割と有名な話かもしれませんが iOS 7とiOS 8以降とでUIActionSheetの挙動が違っていたためハマりました。 Xcode 7.3.1ではすでにiOS 7はサポートされておらず、手元にiOS 7デバイスがなかったのでハマったとも言えます。挙動が掴めずに最終的にiOS 7デバイス…

SwiftでiOSデバイスに入っている楽曲データを取得する

iOSデバイス(iPhoneやiPod)に入っている楽曲データ一覧からアーティスト情報やタイトル情報を取得します。 let albumsQuery = MPMediaQuery.albumsQuery() if let albums = albumsQuery.collections { for album in albums { for song in album.items { // …

Swiftでタブバーにバッジを点灯させる/タブバーの部分に任意のUIViewを表示させる

iOSアプリでタブバーにバッヂを点灯させてみましょう。また消灯させる方法についても紹介します。 標準のバッヂはモサっとしていて嫌だと思う方もいるかもしれません。カスタマイズさせることを厭わない方向けに、タブバーの部分に任意のUIViewを表示させる…

SwiftでUINavigationControllerのナビゲーションバーを表示/非表示を動的に切り替える

UINavigationControllerのナビゲーションバーを表示/非表示を動的に切り替える方法としては、UINavigationController#setNavigationBarHiddenメソッドを使います。 // ナビバーの表示を切り替える if let nv = navigationController { let hidden = !nv.navi…

SwiftでSVGKitを使ってSVG画像を表示する

SVGはベクター形式の画像フォーマットのひとつです。SVGを使ったことがなかったので調べたこともないのですが、SVGをUIImageに変換するライブラリはいくつかあるようです。 ここでは、SVGKitを使って画像を表示しました。 導入にはいつもどおりCocoaPodsを使…

Xcode 7.2(iOS 9.2 SDK)を使うとUILabelが崩れたりNSAttributedString#boundingRectWithSizeで意図しない値が返ってくる

時間ができた時にコツコツと Xcode 6.4 + iOS 8.4 SDKを使って開発していたアプリをXcode 7.2でビルドが通るようにしていました。要するにSwift 1.2からSwift 2.1.1への移行です。 ある時、UICollectionViewのフッターの表示が崩れていることに気付きました…

iOSでカスタムフォントを使う

その昔、iOSアプリでカスタムフォントを使うのはそれなりに大変だった気がするのですが、Xcode 7ではInterface Builderからカスタムフォントを直接指定できるようになっていました*1。 本記事では、iOSでカスタムフォントを使う方法を紹介します。具体的には…

Swiftで'_' is not convertible to 'StringLiteralConvertible'が発生したとき

'_' is not convertible to 'StringLiteralConvertible'が発生したとき。 var hoge = [ "duration": 0.5, "easing": "EasingInOutBounce", "transform": CGAffineTransformMakeScale(1.4, 1.4) ] var image = UIImage(named: "image_name") var hoge = [ "du…

SwiftでGrand Central Dispatch(GCD)を使った並列処理が実行される順番を調べてみた

Grand Central Dispatch(GCD)を使った並列処理が実行される順番を調べました。 やりたいこととしては、別スレッド上で処理してすべての処理が完了したらUIスレッドに終わった通知を送りたい。つまり並列処理の待ち合わせ(並列プログラミングガイド的にいえば…