Android, iPhone等のスマートフォン向けアプリ開発などの話題を中心に、時事ネタなどを気の向くままに書いています。 iOS 6にて導入されたAutoLayoutですが、iOS 7にて更に重要度が増し、いやがうえにも使用せざる終えなくなっている方も多いかと思います。 しかし、AutoLayoutは意外にわかりにくく、慣れが必要ではないかと思います。 そこで、備忘録を兼ねて少しAutoLayoutの基本的な記述方法とエラーの種類について記載したいと思います。 間違いがありましたならばご指摘ください。 ただし、私自身がStoryBoardを使わない派なので、ソースコードでの指定方法です(笑) しかし、ソースコードでの記述方法を知るとStoryBoardでのAutoLayout指定の理解が深まるのではないかと思います。 加えて、ソースコードでの記述方法を知れば動的にAutoLayoutの
iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど 前回は UIDevice を使って各種情報を取得したが機種名称は取れなかった。 Cocoaの日々: UIDevice 例えば UIDevice.model から "iPhone" を取得できるが 3GS なのか 3G なのかがわからない。どうやったら機種名が取れるのか? 機種名称取得 機種名称取得の方法を探してみるといくつかみつかった。 Determine Device Type – 3G or 3GS / iPod First or Second Generation Determine device (iPhone, iPod Touch) with iPhone SDK - Stack Overflow 特別な API は用意されていないので、どちらも sysctlbyname
今更ではあるがメモしておく。 画面上にボタンを用意するにはUIButtonを使うが、標準の外観では物足りない場合はボタンに見える画像を用意することが多い。ところがHTMLのつもりでImageプロパティに画像を指定してTitleプロパティにラベルを指定…とやってしまうと画像だけ表示されてラベルが表示されない。 その場合はラベルも含んだボタン画像を用意するというのも一つの方法だが、ボタンの種類が多い場合は用意すべき画像が多くなってしまう。背景画像(BackgroundImageプロパティ)に画像を設定する。 ただ、単純に背景画像を設定してもいいが、より細かく表現するにはボタンの状態別に画像を用意する。非活性状態、有効状態、選択状態、押下状態の4種類あればよいだろう。それぞれ次のようなコードになる。 [button setBackgroundImage:[UIImage ...] forStat
はじめに REST-APIやWebSocketを用いたアプリを作るときにはカスタムモデルクラスをAPIのJSONから作成して、そのモデルクラスをまたJSONに戻してAPIに投げることがよくあります。マッピングのための便利なOSSとしてMuntleやJSONModelがありますが、これらはサブクラス化を前提としており、使うには少し不便です。 OSSを使わずにKVC(Key Value Coding)を用いる方法は割りと個人的に気に入っている方法でして、今回そのやり方を紹介するのと合わせて、マッピングのためのカスタムカテゴリも作成したので公開します。 サンプルプロジェクトはこちらです。 JSON -> Object Mapper JSONの文字列からObjectにマッピングするのはカテゴリを使わずに標準的なKVCを用いるだけで行けます。 MYModel.json { "canUpdate":
iPhone6の実機で検証をしようとしたら、「Process launch failed: Security」とエラー出た場合、ホーム画面を見るとインストールアイコンがでてくるので、それをタップして、「信頼」を押すと実行されます。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
ビューが表示される際にSettingsをロード、ビューが消える際にSettingsをセーブすれば良いはずだが、FooViewControllerに配置されているbtnBack(UIBarButtonItem)がタップされてdismissModalViewControllerAnimated:が呼ばれた際にviewDidDisappearは呼ばれないのである。 昨日のエントリを書いた後、親クラスのデリゲートメッセージを呼び出していないことをコメントで指摘頂いた時にピンと来たのだが、これは呼び出し側のViewControllerと呼び出される側のViewControllerが正しく連携していないことが原因だ。 呼び出す側、ルートのViewControllerを"A"、呼び出される側のViewControllerを"B"としよう。アプリケーション起動後にAを表示して、その後AからBを呼び出して表
書式文字列の仕様は以下の通りです。 h Hour [1-12] H Hour [0-23] K Hour [0-11] k Hour [1-24] UTS #35: Locale Data Markup Language それでこんなコードで実験してみると・・・ NSDate *now = [[NSDate date] retain]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"hh:mm:ss"]; NSString *formattedDate = [dateFormatter stringFromDate:now]; NSLog(@"%@", formattedDate); [dateFormatter setDateFormat:@"
はじめに iOS8からプッシュ通知の通知領域をカスタマイズ可能になったり、ボタンを表示する機能が追加されました。 (こちらについては、他の投稿に詳しくありますので本記事では割愛します。) 機能追加に伴い、プッシュ通知の設定方法や、デバイストークンの取得方法に変更がありましたので、そちらについて説明していこうと思います。 本記事はXcode6(iOS8ビルド)でビルドされたのiOS8の端末での動作となります。 Xcode5(iOS7ビルド)の場合はいままでの設定方法でiOS8へプッシュ通知が送信できる事を確認しています。 プッシュ通知の設定 iOS7以前では-application:didFinishLaunchingWithOptions:へ下記の様なregisterForRemoteNotificationTypes:でプッシュ設定を行うのが一般的でした。 しかし、iOS8からこのメソッ
作業環境 Mac OS X 10.9.1 Xcode 5.0.2 準備 1. Objective-C-HMTL-Parserの導入 HTMLをパースするために「Objective-C-HMTL-Parser」というライブラリを使います。ソースコードはGitHubで公開されていますので、上記のリンクから適当にローカルにクローンしてください。クローンしたもののうち、README.md以外をXcodeの自分のプロジェクトにコピーしてください。コピーする際に、「Copy items to destination's group folder」にチェックを必ず付けてください。 2. 依存ライブラリの追加 Objective-C-HMTL-Parserはlibxml2.dylibのラッパーですので、libxml2.dylibを追加しないと動きません。 General -> Linked Framewo
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
Objective-Cでハッシュ関数使う必要が出てきたので調べてみた。 -(NSString*) sha256:(NSString *)text{ const char *s=[text cStringUsingEncoding:NSASCIIStringEncoding]; NSData *keyData=[NSData dataWithBytes:s length:strlen(s)]; uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0}; CC_SHA256(keyData.bytes, keyData.length, digest); NSData *out = [NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH]; NSString *hash=[out description
証明書作成 証明書は、開発環境用と本番環境用で別々の物を作成しなければいけません。 この記事では、開発用のみに焦点を当てていきます。 開発と本番で違うのは、証明書を新たに作ることと、APNsのホストが違うこと、、くらいなんでしょうか(不安)。 "Certificates, Identifiers & Profiles" の "App IDs" からプッシュ通知を使いたいアプリの設定へ行き "Push Notifications" のチェックを入れる "Development SSL Certificate" の "Create Certificate..." ボタン 証明書を作成して登録する キーチェーンアクセスからいつも通り証明書リクエストを作成 Appleに投げる 証明書をゲット! Keychainで証明書をp12形式で書き出す openssl pkcs12 -in input.p12
少し言い訳しておくと、ちゃんと確認せずに書いているので間違いがあるかもしれません。Wikipediaだったら[要出典]ってたくさん付けられてしまいそうです。 大きな違いをいくつか紹介していきます。 Androidは受信処理を各自実装する必要がある。 iOSとAndroidのプッシュ通知の設計の大きな違いは、iOSはOSの仕組みに乗らなければいけないのに対して、Androidは自由度が高く各自の実装にゆだねられているという点です。 iOSのAPNSは送信するデータの形式もしっかり決まっていて、その形式にしたがって送信すれば、あとはOSが定めた方法で表示されるだけです。一方のAndroid送信データは完全に自由で、それを受信した際にアプリがどんな動作をするかも、制限されていません。 逆にいえばAndroidは受信時の表示などの処理をすべて独自で実装する必要があり、クライアントの実装の手間は数倍
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く