2008-09-27 17 views
7

मैं क्वार्ट्ज संदर्भ का उपयोग करके टेक्स्ट प्रदर्शित करने का प्रयास कर रहा हूं, लेकिन इससे कोई फर्क नहीं पड़ता कि मैंने कोशिश की है कि मुझे टेक्स्ट को प्रदर्शित करने के लिए भाग्य प्राप्त नहीं हुआ है (हालांकि मैं अन्य क्वार्ट्ज ऑब्जेक्ट्स के सभी प्रकार प्रदर्शित करने में सक्षम हूं) । कोई जानता है कि मैं क्या गलत कर रहा हूं?आईफोन पर क्वार्ट्ज का उपयोग करके टेक्स्ट कैसे प्रदर्शित करें?

उदाहरण:

-(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); 
}  

उत्तर

7

यहाँ कोड का एक टुकड़ा है कि मैं का उपयोग कर रहा है।

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]; 
} 
+0

यह @ "नमूना पाठ" होना चाहिए क्योंकि फ़ंक्शन को एनएसएसटींग * की अपेक्षा है। यह मेरे लिए अन्यथा धन्यवाद, धन्यवाद। हालांकि मुझे drawAtPoint फ़ंक्शन का संदर्भ नहीं मिल रहा है, जो चिंताजनक है। – CiscoIPPhone

+1

drawAtPoint UIKit NSString श्रेणी का हिस्सा है - http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html – Hunter

9

ठीक है, मैं समझ गया। सबसे पहले, अपने एन्कोडिंग मोड को kCGEncodingMacRoman में बदलें। दूसरा, इसके नीचे इस पंक्ति को डालें:

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

यह पाठ के लिए रूपांतरण मैट्रिक्स सेट करता है ताकि यह सही ढंग से खींचा जा सके। यदि आप उस पंक्ति को नहीं डालते हैं, तो आपका टेक्स्ट उल्टा हो जाएगा और आगे की ओर होगा। कोई विचार नहीं कि यह डिफ़ॉल्ट क्यों नहीं था। अंत में, सुनिश्चित करें कि आपने सही रंग भर दिया है। यदि आप बैकड्रॉप रंग से टेक्स्ट रंग में बदलना भूल जाते हैं और सफेद-सफेद-सफेद टेक्स्ट के साथ समाप्त करना भूल जाते हैं तो यह एक आसान गलती है।

+1

यह डिफ़ॉल्ट नहीं है क्योंकि यह फ़ंक्शन - और सभी क्वार्ट्ज - पोर्टेबिलिटी के लिए ओएस एक्स पर आईओएस पर बिल्कुल वही काम करता है, लेकिन किसी कारण से उन्होंने आईओएस पर [डिफ़ॉल्ट] सिस्टम-वाइड समन्वय प्रणाली को उलटा कर दिया। मैक पर (0, 0) कम बाएं है, आईओएस पर इसके शीर्ष बाएं। यदि आप मैक कोड पोर्ट कर रहे थे, तो आप प्रत्येक आदिम के लिए इसके बारे में सोचने के बजाय, अपने सभी कोड करने से पहले समन्वय प्रणाली को उलटा और दोबारा बदल देंगे। – Tommy

संबंधित मुद्दे

 संबंधित मुद्दे