SORU
9 Temmuz 2009, PERŞEMBE


Nasıl UİLabel ekran özetlenen metin yapabilirim?

Tek istediğim beyaz UİLabel benim metin etrafında bir piksel siyah bir sınır vardır.

Ben beceriksizce teğetsel ilgili birkaç online örneklerden Arnavut kaldırımlı bir araya getiren kadarıyla kodu ile UİLabel aşağıda sınıflara kadar gittim. Ve çalışıyor ama çok çok yavaş (hariç simülatörü) ve ben alamadım center metin dikey olarak da (yani kodlanmış y değeri son satır geçici olarak). Ahhhh!

void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) {
    CGContextSetTextDrawingMode(gc, kCGTextInvisible);
    CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str));
    CGPoint pt = CGContextGetTextPosition(gc);

    CGContextSetTextDrawingMode(gc, kCGTextFillStroke);

    CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str));
}


- (void)drawRect:(CGRect)rect{

    CGContextRef theContext = UIGraphicsGetCurrentContext();
    CGRect viewBounds = self.bounds;

    CGContextTranslateCTM(theContext, 0, viewBounds.size.height);
    CGContextScaleCTM(theContext, 1, -1);

    CGContextSelectFont (theContext, "Helvetica", viewBounds.size.height,  kCGEncodingMacRoman);

    CGContextSetRGBFillColor (theContext, 1, 1, 1, 1);
    CGContextSetRGBStrokeColor (theContext, 0, 0, 0, 1);
    CGContextSetLineWidth(theContext, 1.0);

    ShowStringCentered(theContext, rect.size.width / 2.0, 12, [[self text] cStringUsingEncoding:NSASCIIStringEncoding]);
}

Ben sadece bunu yapmak için daha basit bir yol bakan olduğumu içimden bir his var. Belki de "dikkatle bakıyor ve gerçekten çok zor çatık rağmen benim için hiç viraj, ama elde edemiyorum drawTextİnRect. drawTextİnRect kılarak

CEVAP
15 EYLÜL 2009, Salı


DrawTextİnRect kılarak bunu başardı:

- (void)drawTextInRect:(CGRect)rect {

  CGSize shadowOffset = self.shadowOffset;
  UIColor *textColor = self.textColor;

  CGContextRef c = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(c, 1);
  CGContextSetLineJoin(c, kCGLineJoinRound);

  CGContextSetTextDrawingMode(c, kCGTextStroke);
  self.textColor = [UIColor whiteColor];
  [super drawTextInRect:rect];

  CGContextSetTextDrawingMode(c, kCGTextFill);
  self.textColor = textColor;
  self.shadowOffset = CGSizeMake(0, 0);
  [super drawTextInRect:rect];

  self.shadowOffset = shadowOffset;

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • Kap Slap

    Kap Slap

    8 Mart 2010
  • SoundHound

    SoundHound

    8 Mart 2006