Sto provando a creare un'app che si adatta bene su iPhone 4. Attualmente la maggior parte di esso si adatta perfettamente, tranne che per un elemento cruciale: il testo che disegno all'interno un CALayer, all'interno del suo drawInContext: metodo. Ecco il mio codice:Il disegno del testo di CGContext non è scalabile su iPhone 4
- (void)drawInContext:(CGContextRef)context {
UIGraphicsPushContext(context);
CGContextSetGrayFillColor(context, 1.0f, 1.0f);
CGContextFillRect(context, self.bounds);
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextSetAllowsFontSmoothing(context, true);
CGContextSetShouldSmoothFonts(context, true);
CGContextSetAllowsFontSubpixelQuantization(context, true);
CGContextSetShouldSubpixelQuantizeFonts(context, true);
CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSelectFont(context, "CardKit", 30.0f, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextShowText(context, "A", sizeof("A"));
UIGraphicsPopContext();
}
Questo breve produrre testo nitido su entrambi i dispositivi, ma purtroppo, produce il testo sfocato su entrambi. Ecco come appare:
Quell'immagine è presa al 100% di zoom su iPhone 4. Che cosa nel mondo? Qualche idea su come posso risolvere questo problema?
questa è solo un'ipotesi da esaminare, non ho provato a vedere cosa fa. Attualmente stai usando un font 30pt, puoi testare la dimensione della stringa con font 60pt tramite (CGSize) sizeWithFont: (UIFont *) font e se la larghezza è all'interno della tua dimensione target rect quindi disegnare usando 60pt e se no disegnare usando 30pt . lo schermo iphone4 è un 2x diretto dello schermo dell'iPhone, quindi sto solo supponendo che il rendering del testo al doppio della dimensione del punto possa funzionare. – scottbates22
Ciò rende solo la lettera tagliata. Vedi: http://zcr.me/01g Ancora sfocato. Solo più grande –