便利なSyntax及び

Unicodeを使ってアイコンを出す方法

Toru Hosokawa
twitter:@anton0825
facebook:toru.hosokawa1
github:hosokawa0825
blog:http://d.hatena.ne.jp/anton0825/

2014.1.15

CGRectのリテラルの書き方

普通の書き方


    CGRect rect1 = CGRectMake(0, 0, 100, 200);
            

こうも書けます

{x, y, width, height}

    CGRect rect2 = {0, 0, 100, 200};
            

こうも書けます

{.origin = {x, y}, .size = {width, height}}

    CGRect rect3 =  {.origin = {0, 0}, .size = {100, 200}};
            

こうも書けます

{.origin = {.x = x, .y = y}, .size = {.width = width, .height = height}}

    CGRect rect4 =  {.origin = {.x = 0, .y = 0}, .size = {.width = 100, .height = 200}};
            

戻り値を返すコードブロックの書き方


    // ({})で囲まれたブロックが即時実行され、最後に評価された変数がreturnされる。
    self.helpButton = ({
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        CGRect buttonRect = innerBounds;
        buttonRect.size = [button sizeThatFits:CGSizeMake(400, 400)];
        buttonRect.origin.x = CGRectGetMaxX(innerBounds)-CGRectGetWidth(buttonRect);
        button.frame = buttonRect
        [self addSubview:button];
        button; // buttonがself.helpButtonに代入される
    });
            
  • スコープがコードブロック内に閉じているので変数名に気を遣わなくていいです。
  • 処理をメソッドに切り出すより見やすい気がします。
  • 主に初期化する時に使います。

Unicodeを使ってアイコンを表示する

\uの後にコードポイントを書くとコードポイントに対応する文字を表示出来る

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title"
        message:@"message" delegate:nil
        cancelButtonTitle:@"\u26D4 NG"
        otherButtonTitles:@"\u2705 OK", nil];
            
表示したい記号とコードポイントの調べ方
  • macの「システム環境設定>キーボード>メニューバーにキーボードビューアと文字ビューアを表示」をチェック
  • メニューバーから文字ビューアを表示する
  • 文字ビューアから表示したい文字を探し、右クリックして「文字の情報をコピー」
  • これをペーストするとコードポイントがわかります

三項演算子を使ったnilチェック

普通のnilチェック

    NSString *msgFullString;
    if (msg) {
        msgFullString = [NSString stringWithFormat:@"Message: %@", msg];
    } else {
        msgFullString = [NSString stringWithFormat:@"Message: %@", @"Unknown error"];
    }
            
三項演算子を使ったnilチェック

    NSString *msgFullString = [NSString stringWithFormat:@"Message: %@", msg ? msg : @"Unknown error"];
            
三項演算子の2項目は省略出来ます

    NSString *msgFullString = [NSString stringWithFormat:@"Message: %@", msg ? : @"Unknown error"];