2010-10-22 7 views
8

पूरी तरह से एक ही पाठ के साथ एक लेबल प्रदर्शित करना आसान है लेकिन जब आप बोल्ड में एक शब्द प्रदर्शित करना चाहते हैं तो क्या होता है?आप UILabel में केवल एक शब्द कैसे बोल्ड कर सकते हैं?

उदाहरण:

अपने सभी ठिकानों हैं हमें के हैं।

+0

मुझे लगता है कि यह वही है जो आप ढूंढ रहे हैं http://stackoverflow.com/questions/3586871/bold-non-bold-text-in-a-single-uilabel – Abhigyan

उत्तर

7

UILabel स्वयं टेक्स्ट के भीतर विभिन्न विशेषताओं/फोंट के साथ एक लेबल नहीं खींच सकता है। लेकिन कोर टेक्स्ट कर सकते हैं। आप UILabel का सबक्लास बना सकते हैं जो एक जिम्मेदार स्ट्रिंग को लपेटता है और इसे खींचने के लिए कोर टेक्स्ट का उपयोग करता है। आप this sample code कोर पाठ प्रोग्रामिंग गाइड से के रूप में ड्राइंग संभाल कर सकते हैं:

// Build up your attributed string, then... 
CTLineRef line = CTLineCreateWithAttributedString(attrString); 

// Set text position and draw the line into the graphics context 
CGContextSetTextPosition(context, 10.0, 10.0); 
CTLineDraw(line, context); 
CFRelease(line); 
1

दुर्भाग्य से, यह वर्तमान में संभव नहीं है। हालांकि, आप UILabel को उपclass कर सकते हैं और इस कार्यक्षमता को शामिल कर सकते हैं।

एक और संभावना UIWebView का उपयोग करेगी, लेकिन इसके लिए HTML टैग और लोड HTML: विधि का उपयोग करने की आवश्यकता है।

1

के रूप में इवान Mulawski लिखा था, UILabel आप क्या चाहते हैं आप नहीं मिलेगा। उस मामले के लिए, न तो UITextField और न ही UITextView होगा।

एक और दृष्टिकोण UIView को उपclass करना होगा और एक-ड्राउरेक्ट लिखना होगा: विधि जो आप चाहते हैं। आप

  • CGContextShowTextAtPoint पर लग सकता है
  • [NSString drawAtPoint: withFont:]
  • [NSString sizeWithFont:]

आप लाइन टूट जाता है और रैपिंग का एक बहुत आवश्यकता होती है नहीं किया जाएगा, तो आप शायद काफी आसानी से कुछ तैयार कर सकते हैं।

UIWebView शायद तेज़ होगा लेकिन यह स्टाइल लेबल के रूप में सरल कुछ के लिए बहुत अधिक ओवरहेड जैसा लगता है।

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