如何使用draw rect中的CGContextShowTextAtPoint方法在自定义标签中绘制货币符号。 这里的符号是字符串格式。
任何帮助!! 感谢
答案 0 :(得分:0)
我真的没有得到你所要求的, 检查文档,该方法看起来像这样:
CGContextRef ctx = UIGraphicsGetCurrentContext();
const char *string = "$";
CGContextShowTextAtPoint (ctx, 160, 240, string, 1);
尚未测试过,但这应该在屏幕中央绘制$。
顺便说一句,为什么不使用图像?
~Natanavra。
答案 1 :(得分:0)
您必须使用C
样式字符串,因为这是CGContextShowTextAtPoint()
所要求的。为了正确处理区域设置(货币符号随区域设置而变化),您必须使用setlocale()
,然后使用strfmon()
格式化字符串,最后传递使用strfmon(
创建的字符串)到CGContextShowTextAtPoint()
。
终端提供以下文件:
man 3 setlocale
man 3 strfmon
编辑/更新:为了您的信息,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()
:
#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);
}