2010-01-09 2 views
0

Как нарисовать символ валюты в пользовательской метке, используя метод CGContextShowTextAtPoint в draw rect. Здесь символ находится в строчном формате.Символ денежного символа

Любая помощь !! Благодаря

ответ

0

Вам необходимо прибегнуть к строкам стиля C, так как это то, что требуется CGContextShowTextAtPoint(). Чтобы правильно обрабатывать языковой стандарт (символ валюты изменяется с помощью локали), вы должны использовать setlocale(), затем вы форматируете строку с помощью strfmon() и, наконец, передаете строку, созданную с помощью strfmon(), до CGContextShowTextAtPoint().

Документация доступна как следует из терминала:

man 3 setlocale 
man 3 strfmon 

EDIT/UPDATE: Для вашей информации, strfmon() внутренне использует struct lconv. Структуру можно получить с помощью функции localeconv(). См. man 3 localeconv для подробного описания полей, доступных в структуре.

, например, попробуйте установить различные локали

#include <stdio.h> 
#include <locale.h> 
#include <monetary.h> 

int main(void) 
{ 
    char buf[BUFSIZ]; 
    double val = 1234.567; 

    /* use your current locale */ 
    setlocale(LC_ALL, ""); 

    /* uncomment the next line and try this to use italian locale */ 
    /* setlocale(LC_ALL, "it_IT"); */ 
    strfmon(buf, sizeof buf, "You owe me %n (%i)\n", val, val); 

    fputs(buf, stdout); 
    return 0; 
} 

Следующие использует localeconv() следующую простую программу C:

#include <stdio.h> 
#include <limits.h> 
#include <locale.h> 

int main(void) 
{ 
    struct lconv l; 
    int i; 

    setlocale(LC_ALL, ""); 
    l = *localeconv(); 

    printf("decimal_point = [%s]\n", l.decimal_point); 
    printf("thousands_sep = [%s]\n", l.thousands_sep); 

    for (i = 0; l.grouping[i] != 0 && l.grouping[i] != CHAR_MAX; i++) 
     printf("grouping[%d] = [%d]\n", i, l.grouping[i]); 

    printf("int_curr_symbol = [%s]\n", l.int_curr_symbol); 
    printf("currency_symbol = [%s]\n", l.currency_symbol); 
    printf("mon_decimal_point = [%s]\n", l.mon_decimal_point); 
    printf("mon_thousands_sep = [%s]\n", l.mon_thousands_sep); 
    printf("positive_sign = [%s]\n", l.positive_sign); 
    printf("negative_sign = [%s]\n", l.negative_sign); 
} 
+0

С строка стиль также может быть определен, как я сделал в моем ответе. указатель char - это строка C. – natanavra

+0

Несомненно. Проблема здесь заключается не в том, как определить строку C, а в том, как правильно печатать языковые зависимые символы (валюта, время и т. Д.) Внутри нее. В предлагаемом решении используются стандартные функции ISO C99 для обработки символов валюты. –

+0

Из вышеизложенного решения я получаю только код валюты для разных лакалей. Мне нужно получить символ, представляющий валюту страны. Как я могу получить символ и поместить его в showTextAtPoint. – diana

0

Я не получить то, что вы спрашиваете, проверки документации, метод будет выглядеть примерно так:

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
const char *string = "$"; 
CGContextShowTextAtPoint (ctx, 160, 240, string, 1); 

Не проверял, но это должно привлечь $ в центр экрана.
BTW, почему бы не использовать изображения?

~ Natanavra.

Смежные вопросы