Uygulamamda bir yol boyunca metin oluşturmaya çalışıyorum; Bu çoğu karakter için iyidir, ancak Japonca (ya da olmayan bir Romanca olmayan). CATiledLayer'ımdaki doğru karakterleri görüntüleyen [NSString drawAtPoint] kullanılmasını tavsiye ettim; Ancak, yaklaşık 5 saniye sonra kaybolurlar. Bu sırada katmanı yakınlaştırabilirim ve düzgün bir şekilde ölçeklendirebiliyorlar, ancak CATiledLayer'a genellikle metnin geri kalanı gibi bağlı kalıyorlar.NSString'in drawAtPoint yöntemini CGContextShowGlyphsAtPoint sorunları yerine kullanarak
Görüntülemeden önce, dizeyi kontrol edip bunlardan herhangi birinin değiştirilemeyeceğine karar veriyorum. Sorunlarım zorunda kalacağım, ben drawAtpoint yerine kullanın:
if (!isFullyDisplayable)
{
CGContextShowGlyphsAtPoint(context, pt.x, pt.y, realGlyph, 1);
}
else {
// fall back on less flexible font rendering for difficult characters
NSString *b = [gv text];
NSString *c = [b substringWithRange:NSMakeRange(j,1)];
[c drawAtPoint:pt withFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0]];
}
kimse metin kaybolur neden olarak herhangi işaretçiler var mı?
kısa sürede drawAtPoint ile dolmaya başlarsa benim ayıklama çıktısını kullanıldıkça:
<Error>: CGContextGetShouldSmoothFonts: invalid context
<Error>: CGContextSetFont: invalid context
<Error>: CGContextSetTextMatrix: invalid context
<Error>: CGContextSetFontSize: invalid context
<Error>: CGContextSetTextPosition: invalid context
<Error>: CGContextShowGlyphsWithAdvances: invalid context
yüzden benim bağlam yönetimi ile ilgili bir şey olduğunu tahmin ediyorum, ama ben kabul olduğu bu aynı ise CGContextShowGlyphsAtPoint kullandığım gibi doğru bağlamda olması gerekir?
NSString drawAtPoint: withFont: Kendi soruya cevaplama
Bunun, yalnızca iOS 4.0 ve sonraki sürümlerde çalıştığından bahsetmelisiniz. UIKit grafik uzantıları, eski FW'lerde diş güvenli değildir. – Split