プログラマメモ2 - programmer no memo2

ストーリボードからよばれるUIViewって何からよばれるのさ 2012/05/28

iOSです。ストーリーボードです。
「ストーリボードからよばれるUIViewって何からよばれるのさ」ということですが、現在のところどうも

- (id)initWithCoder:(NSCoder *)coder
の感じです。
参考
objective c - How is view initialized when loaded via a storyboard? - Stack Overflow

UITabBarControllerなアプリの場合の広告(admob)の置き方 2012/05/24

AdMobです。 タブなアプリケーションでタブを切り替えるたびに広告をロードしてしまうのがいやだなーと思っていました。



参考
アプリ開発:UITabBarControllerへの効果的な広告の貼り方 | JOHN DOE
ApplicationDelegateのdidFinishLaunchingWithOptionsでのっけるのがいい感じでした。

rootViewControllerがUITabBarControllerなので素直にwindowから取得するという方法です。

僕の現在のコードはこんな感じです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // *UITabBarControllerを取得する UITabBarController *tabBarController = (UITabBarController*)self.window.rootViewController; _gadBannerView = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, tabBarController.view.frame.size.height - GAD_SIZE_320x50.height - 49, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)]; // Specify the ad's "unit identifier." This is your AdMob Publisher ID. _gadBannerView.adUnitID = @""; // Let the runtime know which UIViewController to restore after taking // the user wherever the ad goes and add it to the view hierarchy. _gadBannerView.rootViewController = tabBarController; [tabBarController.view addSubview:_gadBannerView]; // Initiate a generic request to load it with an ad. [_gadBannerView loadRequest:[GADRequest request]]; return YES; }

遠近グリッドツールを隠す - イラレ 2012/05/20

何気に使い慣れていないイラストレータをさわっていて「遠近グリッドツール」でグリッドが表示されてしまいどう消すで悩んだのでメモ
参考
遠近グリッドを非表示にする方法

「表示」→「遠近グリッド」→「グリッドを隠す」

Storyboard doesn't contain a view controller with identifier - identifierを設定しよう!! 2012/05/18


iphone - STORYBOARD - doesn't contain a view controller with identifier - Stack Overflow

下記のようなコードをうごかそうとしてエラーが
DataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
StoryBoardに何やらidentifierがないぞとおこられた。で、クラスだけ指定しただけではだめで、どこで設定するのかというと、そのものずばりAttribute inspectorにidentifierを設定する項目あり。ここでクラス名と同じものを指定してあげて、動いた。
ストーリーボードはすごく簡単なんだけど、こういうところではまると途方にくれる。identifierを指定する必要性があるところでしか気がつかないなー。

GameCenterを使えるまで 2012/05/08

iosです。GameCenterを使えるようになるまでについてです。
結構スムーズだったのですが、2点ほど時間ロスにつながったことがありました。
ひつとめ。
いろいろ調べるとチュートリアル がインターネット上にあるので、設定や実装は問題なかったのですが、最初にスコアをサーバに送ったあとにリーダーボードに反映されるまでのタイムラグがあってはまりました。3〜4時間あーだこーだしてましたが、一晩寝て朝確認したら反映されてました。
最初にスコア送信してリーダボードに反映されなくても、リーダボードが表示できるのであれば、しばらく待てばよいと思います。
でも、時間がかかるのはちょっといやですね。不安だし

ふたつめ
アプリをsubmitしたreviewしてもらうときになってわかったこと
結構、ネットでさがすとはまった人たちがいるようですね。僕もそのひとりですが。
凡ミスになりますが、再REVIEWされないといけないので、これもまたリリースまでの時間損失になるで注意したい。僕の場合は2日ですね。

たとえばitunes connectで下記のようになっているかチェック。この設定をみたことないというなら、有効になっていないおそれあり、設定してREVIEW依頼しないと時間ロスになります。

参考

ポジティヴ?をリリースしました!! 2012/05/07
2012/05/11

またもや微妙なものをリリースしました。今度はゲームにチャレンジです。
cocos2dをつかっています。
27秒プレイしたら飽きます(笑)
でもよかったらダウンロードしてみてくださいな。

ポジティヴ? para iPhone 3GS, iPhone 4, iPhone 4S, iPod touch (tercera generación), iPod touch (cuarta generación) y iPad en el App Store de iTunes

中身は簡単なものです。gamecenterつかってみたりしました。
すんごい小粒なアプリですが、つくってみてcocos2d勉強になりましたよ。

2012/05/12 追記
で、どれぐらいのダウンロードかといいますとだいたい50ぐらいでした!!
なんでもダウンロードされるわけではないんですね。(涙)
メニューとか広告の位置とか、音楽とか参考にさせていただいたのは 面白革命 capsule+さんですが、絵の周りとかもっとがんばらないと。
いい勉強になりました。

CALayerをアッド 2012/05/05

cocoaです。CALayerをviewにaddです。すぐにコードがでてこなかったので。

UIImage *image = [UIImage imageNamed:@"help.png"]; CALayer* layer=[CALayer layer]; layer.contents = (id)image.CGImage; [layer setBounds:CGRectMake(0,0,image.size.width,image.size.height)]; [layer setPosition:CGPointMake(160,240)]; [layer setAnchorPoint:CGPointMake(0.5f,0.5f)]; [self.view.layer addSublayer:layer];

日付の差 2012/05/05

Objective-Cです。日付の差です。
こんな感じ。

NSDateComponents *differenceHour = [calendar components:NSHourCalendarUnit fromDate:_dateGotobed toDate:_dateWakeup options:0];

参考
iphone - Number of days between two NSDates - Stack Overflow

年月日だけ今日にする 2012/05/04

Objective-Cです。日付処理です。いまいち要領得てないです。
uidatepickerを設定するときに今日の日付だけにして時と分は画面のままにしたいなーと思ったのですが、いまいちうまくできる方法がわかってないです。とりあえず、なんとかそれっぽいコードができたので。
下の画面の今日ボタンを押したときのロジックです。

つかったコード
{ unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit ; unsigned unitFlags2 = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; // デートピッカーから取得した値 NSDate *date = _datePicker.date; // 時分だけでNSDateComponentsを作成 NSDateComponents *comps = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] components:unitFlags fromDate:date]; { // 作成したNSDateComponentsを今日の年月日にする NSDate *today = [NSDate date]; NSDateComponents *tmp = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] components:unitFlags2 fromDate:today]; [comps setYear:tmp.year]; [comps setMonth:tmp.month]; [comps setDay:tmp.day]; } NSCalendar *calendar= [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; // NSDateComponentsからNSDateを作成 NSDate *toDate = [calendar dateFromComponents: comps]; // デートピッカーに設定 _datePicker.date = toDate; }