Objective-C

Socialフレームワーク

SocialフレームワークとはiOSにビルドインされたFacebookとTwitter連携機能. jsonをやり取りするので非同期でないと処理がハングアップする. if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController …

UITableViewの使い方

ViewControllerをUITableViewDelegateとUITableViewDataSourceに準拠させておく viewDidLoad内でUITableViewのDelegateとDataSourceをselfに設定 以下のメソッドを実装 didSelectRowAtIndexはセルの選択時に呼び出される.segueを呼び出すなどの処理を行う.…

UIActionSheet

UIActionSheetを使うには, UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Upload" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"DropBox", @"Evernote", nil]; [actionSheet showIn…

Objective-Cで画面キャプチャ

UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); QuartzCore/QuartzCore.hのインポ…

Objective-Cで別スレッドで処理

バックグラウンドスレッドで処理を行いたい場合は [self performSelectorInBackground:@selector(method) withObject:nil]; を用いる.withObjectにはメソッドの引数を指定する. メインスレッド(画面の描画を行っているスレッド)上での遅延実行は [self per…

Objective-Cで画像のリサイズ

画像トリミングについて imagePickerControllerで取得した画像をリサイズしてから使う方が何かと便利かも. -(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info ピッカーで画像選択後,info…

segueで条件分岐する方法

segueをボタンなどではなくViewから伸ばす. segueにidentifierを設定する.ここではtoChoosePictureという名前をつけた. [self performSegueWithIdentifier:@"toChoosePicture"sender:self]; を使い,遷移を実行する.データの受け渡しは - (void)prepareF…

AVFoundationのセットアップ

AVFoundationを使う機会があり,そのなかでも特にセットアップがわかりにくかったのでメモに残しておく. 以下をコピペすればOKなようにしてある. - (void)setupAVCapture { NSError *error = nil; self.session = [[AVCaptureSession alloc] init]; if ([[…

Xcodeのプロジェクト名を変える

あまり機会は多くないかもしれないけどXcodeのプロジェクト名を変えるときの注意点. Delegateのファイル名を変える Delegateのクラス名を変える xibファイルのobjectsのクラスを変える pch(プリコンパイル)ファイル名を変える(target) prefixのファイル…

Xcodeにフレームワークを追加する方法

TARGETS -> Build Phasesタブ -> Link Binary With Librariesから追加.

Objective-CでJSONを扱う.NSJSONSerialization編

iOS5以降はTwitter統合の関係上NSJSONSerializationクラスが追加されたのでJSONがぐっと楽に扱えるようになった. 以下のコードはInstagramにアクセスしたときに書いた実験用のコードの一部. NSString *url = @"SOME_URL"; NSURLRequest *request = [[NSURL…

UIView(とそのサブクラス)を動的に生成する

基本中の基本ですがUIViewを動的に生成し,加える方法. //Create UIView CGRect thumbnailsRect = CGRectMake(0.0, 0.0, 150.0, 150.0); thumbnailsView = [[ThumbnailsView alloc] initWithFrame:thumbnailsRect]; ... //Set thumbnailsView [[self view] …

iOSでタッチされた座標を取得

iOSは(Androidとかでもそうだけど)画面がタッチされたらEventが発生する.Eventはオブジェクトとしてアプリに通知される.Eventオブジェクト内部にタッチされた座標などの情報が含まれているのでそれを取り出してやればOK. イベントハンドラをオーバーライ…

UIScrollViewのスクロール速度の変更

UIScrollViewのサブクラスはスクロール速度を変更することができる. UICollectionViewなどはスクロール速度が速すぎると落ちる可能性がある(経験談). プロパティの decelerationRate を変更すればOK.速度は UIScrollViewDecelerationRateFast UIScrollVie…

Cocoa ApplicationのAboutPanelの設定

Supporting Filesフォルダ内のCredits.rtfがAboutPanelに表示される リッチテキストがそのまま使える

NSMutableArrayでオブジェクトの入れ替え

オブジェクトの入れ替えなんてあまりやる機会はないかもしれないけどそれだけにあんまり情報がないので… exchengeObjectAtIndex: withIndex: を使えば簡単に入れ替え可能.

UIRefreshControlの使い方

引っ張って更新を簡単に実装するためのコントロール @property (retain, nonatomic) UIRefreshControl *refreshControl; @synthesize refreshControl = _refreshControl; しておき,viewDidLoadとかで _refreshControl = [[UIRefreshControl alloc] init]; […

NSManagedObjectのデータ操作

NSManagedObject(とそのサブクラス)のプロパティを操作するにはKeyValueCodingを使う NSManagedObject *object … [object setValue:value forKey:@"key"];

UIImageをNSDataにして保存

UIImageをNSDataに変換するには PNGの場合 NSData *data = UIImagePNGRepresentation(self.pngImage); JPEGの場合 NSData *data = UIImageJPEGRepresentation(self.jpegImage);

Macで起動中のアプリの情報を取得

OSXではQuartz Window Serverから現在起動中アプリの情報(正確には起動中のWindowの情報)を取得できる. やり方は簡単. CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID); kCGWindowListOptionAll は全ての…