Рисование символа валюты - PullRequest
0 голосов
/ 09 января 2010

Как нарисовать символ валюты в пользовательской метке, используя метод CGContextShowTextAtPoint в Draw Rect. Здесь символ в строковом формате.

Любая помощь! Спасибо

Ответы [ 2 ]

0 голосов
/ 09 января 2010

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

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

man 3 setlocale
man 3 strfmon

РЕДАКТИРОВАТЬ / ОБНОВИТЬ: Для вашей информации, strfmon() внутренне использует struct lconv. Структуру можно получить с помощью функции localeconv(). См. man 3 localeconv для подробного описания полей, доступных в структуре.

например, попробуйте следующую простую программу на C, устанавливающую различные локали

#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():

#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 голосов
/ 09 января 2010

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

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

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

~ Натанавра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...