0

これは、ストアから価格を取得するためのコードの一部です。

NSNumberFormatter * priceFormatter = [NSNumberFormatter new];
[priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[priceFormatter setLocale:_skProduct.priceLocale];
NSString *price = [priceFormatter stringFromNumber:_skProduct.price];

結果の価格は、デザイン効果を適用する必要があるため、Cocos2D ではビットマップ フォントを使用して表示する必要があります。問題は、可能なすべてのロケールで価格を表示するために必要な文字の完全なセットは何かということです。次に、セットを GlyphDesigner に入れ、フォントをエクスポートします。アトラスのサイズが限られているため、すべての Unicode 文字を入れることはできません。そのため、価格を表示するためのセット (数字、ドル、ユーロ記号、おそらくいくつかのラテン文字..) のみが必要です。

4

1 に答える 1

4
  1. アプリ内購入を利用できる国のリストを作成します。
  2. そのリストをロケール識別子の NSArray に変換します。
  3. その配列を繰り返し処理し、NSLocale を作成します
  4. このロケールを使用して、NSNumberFormatter で価格文字列を作成します
  5. 使用したすべての文字を保存します。
  6. ???
  7. 利益

このような何かがそれを行う必要があります:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterCurrencyStyle;
NSMutableSet *set = [NSMutableSet set];

// all available locales, you probably don't need them all
NSArray *availableLocaleIdentifiers = [NSLocale availableLocaleIdentifiers];            

// compile a list of the locales you'll need
availableLocaleIdentifiers = @[ @"de_DE", @"de_CH", @"en_GB", @"en_US", @"ja_JP"];   
for (NSString *localeIdentifier in availableLocaleIdentifiers) {
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
    nf.locale = locale;
    NSString *priceString = [nf stringFromNumber:@(123456789.99)];
    for (NSInteger i = 0; i < [priceString length]; i++) {
        unichar character = [priceString characterAtIndex:i];
        [set addObject:[NSString stringWithFormat: @"%C", character]];
    }
}
NSArray *sorted = [set sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES]]];
NSString *allCharacters = [sorted componentsJoinedByString:@""];

NSLog(@"\"%@\"", allCharacters);

出力:"$',.0123456789CFH £€¥"

于 2013-07-07T15:54:24.947 に答える