android & ios

UIViewからUIImageを作る

カテゴリを作ってみました。 sample.m UIImage *image = [view getImage]; で表示されているUIViewのUIImageを取得できます。 https://gist.github.com/fd28f56f530913cf9e04

UITableViewControllerではツールバーを一番下端に付けられない?

っぽいのでNavigationControllerのToolbarオプションをONにして、全ての画面でツールバーが出るようにして対応した。

3周遅れぐらいでiOSのSocial.frameworkを使ってみる

twitterへの投稿 Social.frameworkのSLComposeViewControllerがお手軽でした。投稿クライアントはiOSとなります。 -(void)viewDidAppear:(BOOL)animated { // エミュレータでも問題なく動く // postのクライアント表示はiOSになる。 SLComposeViewController *twitterPostVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [twitterPostVC setInitialText:@"iOSのSocialFrameworkから投稿テスト。\nSLComposeViewController...

awakeFromNibとinitWithFrameとinitWithCoderの使い方

initWithFrameとinitWithCoderの違い initWithFrameは、code上でobjectを作る時に呼ばれる initWithCoderは、interface builder(storyboardやnibファイルなど)からobjectを作るときに呼ばれる initWithCoderとawakeFromNibの違い initWithCoderでは、IBOutletやIBActionはロードされていない、awakeFromNibはロードされた後に呼び出される 使い方 interface builder(storyboard)使ってて、なにも考えず使いたいならawakeFromNibを使うといいのでは initWithFrameとinitWithCorder両方...

AdSupport使ってない人は、FacebookSDKを3.13.1にUpdateするべき

この問題にはまってしまった itunesconnectのアップ時、IDFA使ってないにも関わらず、AdSupportを使っているとアップロード時にvalidation errorになる問題。。 waiting for uploadの状態で、validationでリジェクトされて、動けなくなる。IDFAを使う選択をするには一度バイナリアップデートして、リジェクトする必要があるため。 Advertising Identifier Does this app use the Advertising Identifier (IDFA)? The Advertising Identifier (IDFA) is a unique ID for each iOS devic...

objective-c クラス 理解のためのメモ

参考資料 クラスの定義 Objective-Cのクラス定義を理解しよう Objective-Cのクラスやプロパティ、特徴的なメソッドの使い方 objective-c の歴史 c +--- c++ +-- objective-c --- objective-c++ NextStep - OpenStep - MacOS X なので、 NSXXX というクラス名が多い。 xcode LLVM と clang(くらん) LLVM と gcc clang はフロントエンド objective-c -(frontend)- LLVM IR -(backend)- ARM | x86 etc clang は c, c++, objective-c, objective-c++ をサポート。 clang は...

複数のmodalを同時に閉じる方法

2つのmodalを同時に閉じたいとき、 [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:NULL]; するとできました。一番深い階層のmodalを指定すると、その前のものは全て閉じることができるみたいです。 (http://stackoverflow.com/questions/8798491/dismissing-multiple-view-controllers-in-ios-5) UIViewControllerのドキュメントにも書いてあります。 If you present several view controllers in succession, thus buildin...

プロトコルで宣言されたプロパティを使う

ちょっと考えれば当たり前なのですが地味にハマったのでメモ プロトコル宣言中に@propertyでプロパティを宣言することが出来ます。 @protocol MyPropertyProtocol <NSObject> @property (nonatomic) NSString *myProperty; @end で、このプロトコルを利用して宣言したプロパティを利用しようとするとunrecognized selectorでクラッシュします。 self.myProperty = @"プロパティ"; なのでどうするかというと@synthesizeを使います。 @synthesize myProperty = _myProperty; ※オー...

iOS4.x 対応のソースコードから「新しいAPI」を使っている箇所を探す

 アプリを iOS4.x でも動作させたい場合、Xcode のプロジェクト設定で Deployment Target を "4.x" (4.3とか) に設定します。 一方で Base SDK は最新のものしか選べません、今だと "7.1"。  この状態だと、コード中で iOS5以降に追加された API を使っていると、iOS4.x端末では当然クラッシュします。  Target を 4.x にしてるんだから、クラッシュしそうなコードがあったら Xcode が検出して警告して欲しいんですが、そういう機能はないみたいです。(実はあるのでしょうか? Andr...

pod installをいくらか早く終わらせるtips

背景 CocoaPodsを使用してライブラリをinstallするとき、pod installを使用します。このとき、なんども繰り返しpod installを実行するとその実行時間が気になることがあり、なんとか短くできないかと思いながらpodのhelpを見ていたところ、使えそうなものがありました。 方法 pod installのかわりに以下を使用します。 $ pod install --no-repo-update 解説 pod installのとき、最新のSpec情報を取得するため、CocoaPods/Specs を毎回pullします。常に最新のものが必要というわけでは...

setDateFormat:@"yyyy-MM-DD HH:mm:ss"で日時がずれる

setDateFormat:@"yyyy-MM-DD HHss"で日時がずれる NSString *firstDate = @"2014-05-20 16:47:00"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-DD HH:mm:ss"]; NSDate *setDate = [dateFormatter dateFromString:firstDate]; NSLog(@"firstDate: %@", firstDate); NSLog(@"setDate: %@", setDate); でlogを吐くと、 firstDate: 2014-05-20 16:47:00 setDate: 2014-01-20 07:47:00 +0000 とな...

Xcode で Test コードを走らせると、appが起動してしまっていやだ

http://stackoverflow.com/questions/15714697/unit-testing-in-xcode-does-it-run-the-app Xcodeで iOS appを作成しているとする。 cmd + u で test を 走らせるたびに、ちゃんとappが起動してしまって、起動プロセスが重いappの場合これが、ストレスになる。 main.m に ちょっと細工をする。 int main(int argc, char *argv[]) { int ret = -1; @autoreleasepool { BOOL inTests = (NSClassFromString(@"XCTest") != nil); if(inTests) { r...

iOS UIDynamicBehavior の挙動をおさらい(github にサンプルで XCode Project をアップ)

ようやく手をつける事ができた。 時間を作って UIDynamicBehavior を試してみた。 細かい動きの調整などはまだ体得していないが、何となく使い方が分かった。 有機的な動きを利用してメニューなどつくると、FlatUIは使っていて心地がよいのかも。 ワンポイントで使えるようにライブラリー群を整えておく事が大切かも。 使いすぎるとうざそう。。。 サンプルプロジェクト -> UIDynamicBehaviorTest XCode Project UIAttachmentBehavior UICollisionBehavior UIGravityBehavior UIPus...

How to update Cocoapods

Caution about updating Cocoapads When we use Cocoapods, sometimes we'll find error like this [!] The master repo requires CocoaPods 0.32.1 - You may installed two or three Cocoapads into /Users/name/.rbenv/shims/ or somewhere. Once you should checked PATH using a command type -a pod. Then it'll show like /Users/name/.rbenv/shims/pod /usr/bin/pod So you should delete /usr/bin/pod(older one). After that, once shutdown your terminal, then it'll be u...

The Swift Programming Language - Enumerations(列挙型)をまとめる

The Swift Programming Language をまとめるトップ Enumerations(enum列挙型) SwiftではObjCやC言語の時よりより表現力が豊 Enumeration Syntax(シンタックス) ブレス内に記述する enum SomeEnumeration { // 定義をここに書く } コンパスの例え enum CompassPoint { case North case South case East case West } 列挙法のメンバー値、Nort, South, East, West、を定義 caseは新しい行の始まりを意味する NOTE SwiftではC言語やObjective-Cとは異なりデフォ...

The Swift Programming Language - Properties(プロパティ)をまとめる

The Swift Programming Language をまとめるトップ Properties(プロパティ) プロパティはクラスや構造体や列挙型に値を紐づける役割がある 定数や変数をそのインスタンスの一部として保持する 算出された(setter, getter)算出プロパティは値を保存するるというより計算する 算出(setter, getter)される算出プロパティはクラスや構造体や列挙型にある 値保存する保存型プロパティはクラスと構造体にある 算出と保存プロパティは特定の型のインスタスと紐づく タイププロパティはそれ...

App Transferするなら絶対に知っておいてほしいKeychainの話

はじめに A開発者からApp TransferでB開発者にアプリを転送して、かつB開発者がアップデートをした場合、Keychainは空になります。Keychainは開発者固有です。 ※ 開発者固有という言い方は語弊があると思いますが、書くのが面倒だったのでそういうことにします。 キーチェンに認証情報が入っている場合 B開発者のKeychainを見に行くので、ログインなどが出来なくなります。 A開発者のKeychainは消えた? 消えていません。再度、App TransferしてA開発者がアップデートを行えば、...

パースしたXMLをCoreDataに登録する際にハマったこと

iOSでwebAPIのXMLデータをパースし、CoreDataに変換 アプリの開発依頼を受けて、web上から飛んでくるAPIを取得し CoreDataに格納する際にハマったことをメモしておきます。 前提条件 NSHttpRequest等を使用し、XMLデータを取得してパースが済んでいる状態とします。 エンティティー構造 カテゴリー 記事 この2つのエンティティを作成し、表示したい内容をプロパティとして設定。 カテゴリー - 記事は 1対多の関係で作成。 やろうとしたこと カテゴリーごとに記事を分けて表示する機能...

Storyboardを使わずにUICollectionViewを使う

registerClass:forCellWithReuseIdentifier:を使います。 ヘッダーやフッターを使うなら registerClass:forSupplementaryViewOfKind:withReuseIdentifier:を使います。その時は flowLayout.headerReferenceSizeに値をセットしないと、collectionView:viewForSupplementaryElementOfKind:atIndexPath:が呼ばれません。 CollectinViewController.h #import <UIKit/UIKit.h> @interface CustomCollectionSectionView : UICollectionReusableView @property (nonatomic, readonly) U...

The Swift Programming Language - Inheritance(継承)をまとめる

The Swift Programming Language をまとめるトップ Inheritance(継承) クラスはメソッドやプロパティを他のクラスから継承することができる 何かを継承しているクラスの事をサブクラスと言い継承されたクラスをスーパークラスと言う クラスはすべてのメソッドやプロパティやサブスクリプトにアクセスでき、また、オーバライドもできる 他プロパティオブザーバーなども継承できたりする 保存型や算出プロパティ問わずオブザーバーは追加できる(以下で説明) Defining a Base Class(...