سؤال

لقد كنت أحاول عرض النص باستخدام سياق الكوارتز، ولكن بغض النظر عما حاولت، لم يحالفني الحظ في عرض النص (على الرغم من أنني قادر على عرض جميع أنواع كائنات الكوارتز الأخرى).هل يعرف أحد ما الذي قد أفعله بشكل خاطئ؟

مثال:

-(void)drawRect:(CGRect)rect
{   
  // Drawing code
  CGContextRef  context = UIGraphicsGetCurrentContext();
  CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
  CGContextSetTextPosition(context,80,80);
  CGContextShowText(context, "hello", 6);
  //not even this works
  CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}    
هل كانت مفيدة؟

المحلول

إليك جزء من الكود الذي أستخدمه.

UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);

و:

static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
                          int maxFontSize, int minFontSize) {
    CGPoint point = CGPointMake(left, y);
    UIFont *font = [UIFont systemFontOfSize:maxFontSize];
    [text drawAtPoint:point forWidth:right - left withFont:font
       minFontSize:minFontSize actualFontSize:NULL
       lineBreakMode:UILineBreakModeTailTruncation
       baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}

نصائح أخرى

حسنا فهمت.أولاً، قم بتغيير وضع التشفير إلى kCGEncodingMacRoman.ثانياً: أدخل تحته هذا السطر:

CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));

يؤدي هذا إلى تعيين مصفوفة التحويل للنص بحيث يتم رسمه بشكل صحيح.إذا لم تضع هذا السطر، فسيكون النص مقلوبًا ومن الخلف إلى الأمام.لا فكرة لماذا لم يكن هذا هو الافتراضي.وأخيرًا، تأكد من أنك قمت بتعيين لون التعبئة الصحيح.من السهل ارتكاب خطأ إذا نسيت التغيير من لون الخلفية إلى لون النص وينتهي الأمر بنص أبيض على أبيض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top