Как нарисовать символ валюты в пользовательской метке, используя метод CGContextShowTextAtPoint в draw rect. Здесь символ находится в строчном формате.Символ денежного символа
Любая помощь !! Благодаря
Как нарисовать символ валюты в пользовательской метке, используя метод CGContextShowTextAtPoint в draw rect. Здесь символ находится в строчном формате.Символ денежного символа
Любая помощь !! Благодаря
Вам необходимо прибегнуть к строкам стиля 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);
}
Я не получить то, что вы спрашиваете, проверки документации, метод будет выглядеть примерно так:
CGContextRef ctx = UIGraphicsGetCurrentContext();
const char *string = "$";
CGContextShowTextAtPoint (ctx, 160, 240, string, 1);
Не проверял, но это должно привлечь $ в центр экрана.
BTW, почему бы не использовать изображения?
~ Natanavra.
С строка стиль также может быть определен, как я сделал в моем ответе. указатель char - это строка C. – natanavra
Несомненно. Проблема здесь заключается не в том, как определить строку C, а в том, как правильно печатать языковые зависимые символы (валюта, время и т. Д.) Внутри нее. В предлагаемом решении используются стандартные функции ISO C99 для обработки символов валюты. –
Из вышеизложенного решения я получаю только код валюты для разных лакалей. Мне нужно получить символ, представляющий валюту страны. Как я могу получить символ и поместить его в showTextAtPoint. – diana