Rysuję ciąg za pomocą CGContextShowTextAtPoint. Dlatego muszę przekonwertować mój NSString, który chcę narysować na c Struny. Niestety symbole specjalne, takie jak symbol waluty euro, nie są wyświetlane poprawnie.Konwersja NSString na cString do użycia z CGContextShowTextAtPoint
CGContextSelectFont(currentContext, "TrebuchetMS", 15, kCGEncodingMacRoman);
CGContextShowTextAtPoint(currentContext, 0, 0, [myString cStringUsingEncoding:[NSString defaultCStringEncoding]], [myString length]);
próbowałem go z kodowaniem kCGEncodingFontSpecific w funkcji CGContextSelectFont ale to nie działało.
Ze względów wydajnościowych muszę korzystać z funkcji CG, a nie z funkcji drawInRect dostarczanych przez NSString.
Może możesz mi pomóc!
PS: Wiem, że to jest często wystawiane temat, ale nie mogę zrozumieć, dlaczego nie mogę dostać pracy ...
Dwie rzeczy: 1. nie ma gwarancji, że defaultCStringEncoding jest albo UTF-8 lub MacRoman, i 2. długość przekazana jako ostatni argument do CGContextShowTextAtPoint() powinna być długością łańcucha C w bajtach, a nie długością znaku NSString. –
Tak, w przypadku kodowania MacRoman, należy użyć NSMacOSRomanStringEncoding zamiast [NSString defaultCStringEncoding]. –