2012年10月17日水曜日

[Objective-c]時間の取得・文字列からの変換

■時間のフォーマット
    NSDate *now = [NSDate date];
    NSCalendar * cal = [NSCalendar currentCalendar];
    NSDateComponents *comps = [cal components:NSYearCalendarUnit |
                                   NSMonthCalendarUnit  |
                                   NSDayCalendarUnit    |
                                   NSHourCalendarUnit   |
                                   NSMinuteCalendarUnit |
                                   NSSecondCalendarUnit
                                         fromDate:now];

    NSLog(@"%@",comps);
  
  compsから年、月等を個別に取得する。取得する値は自分のタイムゾーン。

■文字列から時間へ
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate* date = [formatter dateFromString:@"2012-04-05 13:12:12"];
    [formatter release];
    
    NSLog(@"%@",date);//出力 2012-04-05 04:12:12 +0000

    指定した時間を、自分のタイムゾーンに応じて変換しているみたい。

2012年10月9日火曜日

xcode pragma mark


#pragma mark - //セパレータ
#pragma mark comment 
// FIXME: comment
// MARK:  comment
// TODO: comment
// !!!: comment
// ???: comment
// ttt: comment //できない

2012年10月8日月曜日

[iOS]ViewControllerでtouchesBeganやボタンのイベントをとるときの注意

以下のようなソースでは、touchesBeganやボタンのイベントはとれない。
 
hpListViewController* listViewController=[[[hpListViewController alloc]initWithFrame:rect]autorelease];

[contenaView addSubview:listViewController.view];
なぜなら、viewはaddSubViewされて保持されるが viewControllerはどこにも関連がないので、解放されてしまう。 だから、利用時にメモリ違反をおこす。 以下のように、retainするか、配列などで保持して、解放されないようにしよう。
 
hpListViewController* listViewController=[[[hpListViewController alloc]initWithFrame:rect]retain];

[contenaView addSubview:listViewController.view];

2012年10月2日火曜日

[iOS]絵の一部を表示

   CALayer* test=[CALayer layer];
    test.contents=(id)[UIImage imageNamed:@"test.png"].CGImage;
    test.frame=CGRectMake(0, 100, 60, 60);
    test.contentsRect=CGRectMake(0.0f, 0.0f, 0.33f, 1.0f);
    [self.view.layer addSublayer:test];
基本,画像はサイズにfitする。test.contentsRectをしていすることで、絵の部分を指定することが可能になる。
指定は、割合で指定する。