Objective-C

UIImageViewを丸くトリミングする

TweetBotのサムネイル表示のように、画像を丸くトリミングする方法を紹介します。 CALayerを使うと数行で実装出来るので便利です。とりあえずサンプルコード UIImage *circleImage = [UIImage imageNamed:@"test.png"]; UIImageView *circleImageView = [[UI…

kobold2d v2.1.0 Xcode5対応

記事にするのが遅れましたが、kobold2d v2.1.0をxcode5で使用可能にするパッチが、作者から出ています。Kobold2D autopatch script for Xcode 5 fixes: https://t.co/qS4Vs7rZVQ— Steffen Itterheim (@gaminghorror) September 25, 2013 対応が切られたと思…

-performSelector:withObject:afterDelay:を用いて、複数のアニメーションを実行するときの注意点

今回ははまった。なので共有として書いておく 以下のようなコードを書いていた [self performSelector:@selector(animate1) withObject:nil afterDelay:0.5f]; [self animate2]; [self performSelector:@selector(animate3) withObject:nil afterDelay:0.5f]…

iOSでEasing

iOSとくにUIKitを使っている場合、デフォルトではイージングが4種類しかありません。そこでおすすめなのが以下のイージングライブラリです。 https://github.com/bryanoltman/CAAnimation-EasingEquations:CAAnimation-EasingEquations 準備 QuartzCoreフレ…

ARC環境におけるNSTimerの再利用(再起動)

NSTimerは -invalidate メソッドをコールするとARCによって回収されてしまう。 なので、再起動のためには再度タイマーの内容を決定してやる必要がある。 具体的な方法を示す。適当なところで、NSTimer *timerのインスタンスを確保しておく。 そして、以下の…

UIScrollView に背景画像を設定する

#import <UIKit/UIKit.h> @interface UIScrollViewWithBGImage : UIViewController <UIScrollViewDelegate> { UIImageView *backgroundImageView; } @property (nonatomic, retain) UIScrollView *scrollView; @end 上のようなヘッダーにおいて、scrollViewプロパティに背景画像を追加する事を考え</uiscrollviewdelegate></uikit/uikit.h>…

UITableViewをアップデートする方法

UITableViewの表示を変更するときは、cellをリロードする必要がある。それには2つの方法があるので簡単にまとめ。 1. [tableView reloadData] //Do some changes [tableView reloadData]; reloadDataメソッドは、cellをメソッドが呼ばれた時点で完全にリロ…

UIScreenのboundsとapplicationFrameの違い

StatusBarの有無で画面の使い方が微妙に変わり、毎回よく分からなくなるのでメモ。 NSLog(@"bounds = %@",NSStringFromCGRect([UIScreen mainScreen].bounds)); NSLog(@"applicationFrame = %@", NSStringFromCGRect([UIScreen mainScreen].applicationFrame…

CookPad Hackason 2013

CookPad Hackason 2013に鎖国のメンバーで参加しました。今回はメンバーの一人が韓国で、一人が昼から深夜前まで居ないという状況でしたが、個人的には良い経験に成りました。 iOSに関してプログラムを書き始めて2年程度経ち、ある程度の事は出来ると考えて…

Frameを決定できるUITableViewController

UITableViewControllerのtableViewは、frameのサイズを変更する事が出来ません。 これだと不便なので、tableViewのサイズを変更出来るUIFlexibleTableViewクラスを作成しました。 ご自由にお使いください。CocoaExtention/Classes/UIFlexibleTableViewContro…

directory not found for option

Kobold2d v2.1.0 へのアップデートに際して、この警告で引っかかったので解決策をメモ。iOS6.0以上に対応したkobold2d v2.1.0へのアップデート時に出たリンカーのエラーです。プロジェクトのBuild Settingsにて、"library"と検索し、"Library Search Paths"…

16進数のNSStringを数値に変換

float hexStringToFloat(NSString* str) { NSString *prefix = [str substringWithRange:NSMakeRange(0, 2)]; if(![prefix isEqualToString:@"0x"]) { str = [@"0x"stringByAppendingString:str]; } NSScanner* pScanner = [NSScannerscannerWithString: str…

UIView on cocos2d

iOS上でcocos2dを使って開発を行う時、UIViewを使いたいときがあります。広告の表示や、WebViewが主だと思いますが。 そのようなときは、以下のようにしてUIViewをのせます。 [[CCDirector sharedDirector].view addSubview:uiview]; メモ程度ですが。

cocoaにてAppDelegateの取得方法

AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; delegateの取得方法。忘れやすいのでメモ。

MediaPlayerViewController サンプル

iOSで動画再生(MPMoviePlayerController) MPMoviePlayerControllerを使うために、そのControllerを作成しなければなりません。 そのサンプルとして MediaPlayerViewController を作ります。自分で作る際に、 ・全画面で動画を再生したい ・画面をタップした…

実機テストとAppStoreでの動作が違った

この様な事態に遭遇しました。尋常ではないレベルで焦り、大至急調べたところ、あるタイミングで次のようなコードが実行されていました。 if(nan) 恥ずべき事態です。こいつが、実機テストの時はNOに、AppStoreではYESと解釈されていたようです。nanがコード…

cocos2dでダブルタップを判別

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint location = [[CCDirector sharedDirector] convertToGL:[touch locationInView:[touch view]]]; location = [self convertToNodeSpace:location]; float delay = 0.2f; switch (…

CCFadeIn, CCFadeOut, CCFadeTo に関して

cocos2d(v2.0.0)のフェードイン、フェードアウトのエフェクトを実装する際は、 CCFadeIn CCFadeOut ではなく CCFadeTo の使用をお勧めします。なぜかというと、 CCFadeInはフェードインをかける前にopacityを0に CCFadeOutはフェードアウトをかける前にopaci…

CGRectFromString の実装を調べてみる

長いです。テストの内容なんてどうでも良いから早く実装を見せろと思った方は、まとめからどうぞ。 CGRect testRect = CGRectFromString(@"{{{0, 1}}, 2, {3, 4, 5}}"); CGRect testRect = CGRectFromString(@"{{{0, 1}}, 2, {3, 4}}"); CGRect testRect = C…

CCLabelBMFontで文字にアウトラインがついてしまう

CCLabelMBFont *sampleFont = [[CCLabelBMFont alloc]initWithString:@"text" fntFile:@"sample.fnt"]; 普通はこうですね。 これを CCLabelMBFont *sampleFont = [[CCLabelBMFont alloc]init]; sampleFont.fntFile = @"text"; sampleFont.fntFile = @"sample…

NSStringFrom~ and ~fromString

NSLog(@"orizin(%f:%f) size(%f:%f)", self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.width); これは冗長です。 NSLog(@"%@",NSStringFromCGRect(self.frame)); こちらを使いましょう。 UIKIT_EXTERN NSString *NSStri…

NSLogで表示される物を変更する

NSObject で定義されている -(NSString*)description; をオーバーライドしてやります。 例えば @interface Name : NSObject @property (nonatomic) NSString *lastName; @property (nonatomic) NSString *firstName; -(id)initWithFirstName:(NSString*)firs…