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

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • KendrickLamarVEVO

    KendrickLama

    9 ŞUBAT 2011
  • metal571

    metal571

    30 Mayıs 2006