ぴよログ

↓に移転したのでこっちは更新されません、多分。

iOS

RailsアプリにiOSクライアントをサッと作る #sgadvent

この記事はソニックガーデン Advent Calendar 2015 、6日目の記事です。 どうも大野(@xoyip)です。3日目に続いて登場させてもらいます。今日は5日目までとは少し変わって技術的なHow Toの話で、自分用の覚書でもあります。 ちなみに3日目のはこれ。 xoyip.…

SwiftでMicrosoft Azure StorageのAPIクライアントを書きました(書いてます)

最近はSwift版のMicrosoft Azure StorageのAPIクライアントを書いている。

Cocoaアプリケーション(OSXアプリ)はじめました

実験的な意味も含めてCocoaアプリの開発を始めた。完成したものはMac App Storeに並べてもらうべくiOSと同じように申請して審査してもらっている。 そもそもMac App Storeに並んでいるアプリはなんと呼ぶのが正解なのかすらよくわかっていないが、Cocoaアプ…

UIWebView内リンクでの遷移をNavigationでやるやつ、Swiftバージョン

iOSでUIWebView内のリンクをタップしたらNavigationで画面遷移させる実験 - PILOG ↑こんなん書いたけどこのときはObjective-Cで書いてたのでSwiftで書き換えてみました。オプショナルが全然慣れませんがこれから勉強します。 import UIKit import TKRSegueOp…

iOSでUIWebView内のリンクをタップしたらNavigationで画面遷移させる実験

しばらくiOSから離れていてSwiftはほとんど触ったことないのでとりあえずObjective-Cでやりました。このあとSwiftで実装し直そうと思ってるけれど、一旦エントリにします。 いつだったかDHHが既存のWebサイトを活かしてアプリ作るよーみたいなことを言ってた…

ボタン以外(UILabelとか)をタップしたいなら透明ボタンがいいかも

iOS開発でボタン以外の要素をタップさせたくなることがたまにあるかもしれない。例えばラベルとか画像とかね。 そういった場合によく取られる方法はもしかしたらtouchesBeganやtouchesEndedのイベントを使うことかもしれない。けれど、タッチ系のイベントで…

Segueによる画面遷移を便利にするTKRSegueOptions

4月ぐらいにスライドで見ていいなーと思ったんだけど、最近初めて使ってみてやはり便利だったので整理しておく。 Storyboardでの画面遷移をスマートにやる方法 - TOKOROM BLOG 余談だけどスライドでみたときはTKRIntentって名前だったんだけど、わかりやすさ…

MPMoviePlayerViewControllerが再生完了時に勝手に閉じて困る

iOSには動画再生用にMPMovierPlayerViewControllerっていうクラスがあって、URLを渡して表示するだけでめちゃくちゃ簡単に動画再生機能を実装できる。すごく便利。 その分自由度が低くてちょっとした挙動を変えるのが大変だったりする。 まず、普通に動画を…

UICollectionViewControllerでの3列、4列のグリッド表示

UICollectionViewControllerを使ったグリッド表示がいい感じになるようパラメータを手探りで調整したのでその結果をメモしておこうと思う。 まずは結果から 3列 4列 パラメータ 3列 4列

iOS7時代のステータスバー非表示方法

このあたりの処理はやり方がコロコロ変わるようなので検索しても情報が古くて困る。2014/06/07時点、Xcode5.1.1、iOS7.1 SDK時点での情報を書いておく。 正解はステータスバーを表示したくないViewControllerでprefersStatusBarHiddenをオーバーライドする。…

Obj-Cで非同期処理の完了を待ちたいならブロック渡してコールバックだよね

Swiftは出たけどまだまだObjective-Cはオワコンってことにはならないと思うからObjective-Cの話を。 Objective-Cで非同期処理をしてその結果を受けてなんかしたい、ってときが結構あるんだけど待ち方がいまいちよくわからなかったことがあった。今思えば基本…

iOSで動画ファイルを連続・リピート・シャッフル再生したいとき

動画ファイルをiTunes経由でiPhoneやiPadに入れるとデフォルトではホームビデオという種類だとして取り込まれる。これを閲覧するには「ビデオ」というアプリを使う。 このアイコンのやつね。 だけど、このビデオアプリには動画を単体で再生する機能しかつい…

UIViewのカテゴリでtouchesBeganなどを定義するとどうなるのか?

Objective-Cではカテゴリを使って既存のクラスに新しいメソッドを追加したかのように振る舞わせることができる。 では、カテゴリで新しいメソッドではなく、既存の(というかオーバーライドして使うようなもの)を定義するとどういう挙動になるのか。気にな…

iOSでFacebook連携ログインするアプリを作る手順まとめ

Facebookログインが必要なiPhoneアプリはたくさんあり、大抵のアプリケーションはFacebookのiPhoneアプリと連携してパスワード入力無しでログインを済ませてくれるのでユーザーとしてはとても楽だ。 だけど、Facebookアプリを使わずに自アプリ内でWebViewを…

バイナリ形式のplistファイル

iOSアプリはiTunesを使えばMacでもダウンロードできます。そしてダウンロードしたipaファイルはzipファイルとして展開することができ、中身を覗き見ることができるようになっています。 ところでiOSアプリケーションのURLスキーム定義はどこに書かれているの…

iOSでアニメーションGIF

iOSのUIImageViewではアニメーションGIFの再生ができないようです。GoogleでUIImageView+gifなどと検索すると先人たちが色々頑張っていることがわかります。 MacとiPhoneでアニメーションGIFを表示する方法まとめ - yoshida_eth0の日記 アニメーションGIFを…

XcodeのstoryboardからUI部品にプロパティを与える方法

Storyboard上に配置しているUI部品のプロパティを、Storyboard上から設定することができるということを最近知りました。これってみんな知ってるんですかね? 独自のボタンクラス サンプルとして角丸半径や輪郭線の幅を外部から設定できるUIButtonのサブクラ…

iOS、Androidの空き容量をコードで調べる

iOS NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error:nil]; if (dictionary) { …

CocoaPodsの比較にGitHubのスター数を用いる

iOS開発で使えそうなコントールを探すのにKFCocoaPodsPluginが便利でした。 CocoaPods用Xcodeプラグインがかなり便利 - PILOG ところでこの検索ダイアログを使うと該当するPodがたくさん見つかって一体何を使っていいのかわからなくなるという事態が起こりま…

KIFを使ったスクリーンショットの自動撮影

昨日書いたの記事では、Objective-Cのコードを用いてスクリーンショットを撮影する方法を紹介しました。 iPhoneアプリの画面をObjective-Cでキャプチャ - PILOG 今日はそのTipsを用いて各画面のスクリーンショットを自動的に撮る方法を紹介します。 スクリー…

iPhoneアプリの画面をObjective-Cでキャプチャ

コードからでもスクリーンショット風の画像を得ることができます。ステータスバーはUIApplicationのwindow外なのか、画像の中には含まれません。 CGContextを新たに作成し、アプリケーション内のWindowsの内容をそのコンテキストに描画していくという感じで…

調整が面倒すぎるのでUIViewのframe用のカテゴリを導入

こういうスライドとか やはりお前らのiOS7対応は間違っている さらには解説記事とか やはりお前らのiOS7対応は間違っている(解説編) - Qiita 読んでもやっぱりうまくいかなくてコードで調整しちゃうときあるよね。 でもCGRectの更新って本質的にめんどくさい…

CocoaPodsのライブラリを編集して使いたいとき

この間書いたように、mwaterfall/MWFeedParserというCocoaPodsでも扱えるRSSフィード解析のライブラリに機能が足りなくて困ったのですが、実装が簡単だったこともあってささっと書いてプルリクを出しておきました。 ところが、このプルリクエストがすぐにマ…

iPhoneで左右にサイドバーを簡単に作る

MMDrawerControllerというライブラリがあります。これを使うと左右のサイドバー(英語ではDrawerと呼ぶことが多いようです。引き出しですね。)を簡単に導入できる上、特別な設定をしなくてもそれなりのクオリティになるとても良いライブラリでうす。 mutual…

NSLogデバッグのときに便利なCGRect→NSStringの変換

NSLogデバッグの良し悪しは置いておくとして、CGRectとかNSDictionaryとかの値をちょっと確認するのにNSLog使ったりしますよね。CGRectの値を確認するときに一生懸命NSLog("%f", rect.size.width)みたいにやってたりマクロ書いたりしていたんですが、もっと…

Objective-CでBlockを遅延実行するコード

performSelectorもいいんだけど、メソッドを定義するのが面倒ってことありますよね。そういうときはブロックを遅延実行させれば良いです。 次のコードをカテゴリとして追加してあげて、 こんなふうに使います。 - (void)hoge { [self performBlock:^(){ // d…

iOSで上へ引っ張って更新させるライブラリ

Twitterのアプリなどが採用していた引っ張って更新するためのコントロールは、UIRefreshControlとしてiOS6からiOS SDKに正式採用されています。ところが、このUIRefreshControlは下へ引っ張って更新するのには対応していますが、上へ引っ張って更新するのに…

iOS用のYouTubeの動画IDを渡すと再生してくれる便利なやつ

YouTubeのAPIで取ってきた情報を何やら使うシリーズ。今日はIDを元に再生を行います。 動画再生系はいくつかのブログポストでやり方を見かけるのですが、YouTubeを再生するとなるとembed用HTMLを埋め込んだWebViewを使うっていう方法ばかり見つかって少し困…

入れ子になったNSDictionaryのデータを取り出す

何重にも入れ子になったNSDictionaryのデータをチマチマ取り出すのは超絶めんどくさいです。valueForKeyで取り出したNSDictionaryにさらにvalueForKeyして、さらに、、なんてやるともうやってられません。 幸いvalueForKeyPathというメソッドで少し簡単にで…

iOSで日時の相対表記

1 week agoみたいな日付の相対表記をiOSでやりたいので探しました。そしたらCocoaPods対応のライブラリがありました。 kevinlawler/NSDate-TimeAgo これです。カテゴリでNSDateを拡張してくれてあります。 インストール 普通のCocoaPods。 # in Podfile pod …