2014年8月31日日曜日

【Objective-C】iPhoneのアプリ名をアプリ名を多言語化(ローカライズ)する方法


1 PROJECTからInfoを選択し、 Localizationsの+を追加して、Japaneseを追加する。








2 Supporting Filesフォルダ内のInfoPlist.stringsを展開して、
  Japaneseが追加されていることを確認し、各ファイル内に以下を設定する。


 
 



■ Japanese
CFBundleDisplayName = "あああ";

■ English
CFBundleDisplayName = "AAA";

このような設定をすることにより、アプリ名が言語によって変更できます。

2014年8月30日土曜日

【Objective-C】カウントアップするタイマーの作り方(ミリ秒まで)

タイマー開始前に時間表示用のラベルの初期化、開始時刻の取得をします。
その後、タイマーのインターバルにはSelectorで指定されているメソッドの呼び出し頻度を設定し、タイマーをリピートさせて開始します。
これにより、onTimerメソッドが0.01秒単位で呼び出しされる。
onTimerにて、開始時刻と現在時刻を比較する。比較結果から分・秒・ミリ秒を求めて、時間表示用のラベルに代入する。
ちなみに、タイマーを停止する場合は、invalidateメソッドを使用します。


■ ヘッダーファイル
NSTimer        * _timer;
NSDate         * _stTime;
@property (weak, nonatomic) IBOutlet UILabel *lblTime;

▪ ソースファイル
- (void)viewDidLoad
{
    self.lblTime.text = @"00:00.000";
    _stTime = [NSDate date];
    _timer = [NSTimer scheduledTimerWithTimeInterval:(0.01)
                                              target:self selector:@selector(onTimer:)
                                            userInfo:nil repeats:YES];
    [_timer fire];
}

- (void)onTimer:(NSTimer*)timer {
    NSTimeInterval dateDiff = [[NSDate date] timeIntervalSinceDate:_stTime];
    //int hour   = dateDiff / (60 * 60);
    int minute = fmod((dateDiff / 60) ,60);
    int second = fmod(dateDiff ,60);
    int miliSec = (dateDiff - floor(dateDiff)) * 1000;
    self.lblTime.text = [NSString stringWithFormat:@"%02d:%02d.%03d",minute,second,miliSec];
}


【Objective-C】文字列から配列を生成する方法

文字列から配列を生成するにはcomponentsSeparatedByStringを使用する。

NSString *data = @"a,b,c"
NSArray *arr = [data componentsSeparatedByString:@","];

data[0] → a
data[1] → b
data[2] → c

2014年8月29日金曜日

【Objective-C】LABEL等のオブジェクトに枠線をつける方法

プロパティからは設定できないので、下記のように実装する必要があります。

#import <QuartzCore/QuartzCore.h>

// 枠線の色
[[self.lblSample1 layer] setBorderColor:[[UIColor whiteColor] CGColor]];
[[self.lblSample1 layer] setBorderWidth:1.0];