2013-04-26 2 views
9

यह सवाल पाठ खरोज ("पाठ की नियुक्ति पाठ आसपास से अलग करने के लिए सही करने के लिए आगे") आईओएस में लागू करने के बारे में है। उदाहरण के लिएउद्देश्य सी - पाठ खरोज

लें निम्न पाठ:

  1. यह पहला खंड है।
  2. यह दूसरा एक,
    दो पंक्तियों के साथ है।
  3. यह तीसरा है।

ध्यान दें कि सेक्शन 2 में दूसरी पंक्ति दाएं से आगे और ऊपर की रेखा से नीचे शुरू होती है।

मेरे कोड NSString की एक सरणी में शामिल है, हर एक के ऊपर की तरह सांख्यिक गोली के साथ एक अनुभाग के रूप में प्रदर्शित किया जाना चाहिए। उदाहरण के लिए:

NSArray *array = [NSArray arrayWithObjects:@"1. This is the first section.", @"2. This is the second one, with two lines.", @"3. This is the third.", nil]; 

मैं स्क्रीन पर टेक्स्ट प्रदर्शित करने के लिए UILable का उपयोग करता हूं।
लेबल के लिए सरणी से पाठ सेट करने के लिए, और एक नई लाइन में प्रत्येक स्ट्रिंग अलग करने के लिए मैं

myLabel.text = [array componentsJoinedByString:@"\n"]; 

कोई भी विचार कैसे इस प्रभाव को प्राप्त करने के लिए प्रयोग करते हैं?

+0

यू drawRect (नियंत्रण के लिए) को ओवरराइड करने की जरूरत है और अपने खुद के खरोज कोड लिखने की जरूरत है इस मुद्दे को हल। – samfisher

+0

क्या आप इसे बुलेट सूची में दिखाए जाने की कोशिश कर रहे हैं?आप समग्र ब्लॉक कैसे प्रस्तुत कर रहे हैं? क्या आप अधिक संदर्भ दे सकते हैं? –

+0

@BrianNickel हाँ मुझे बुलेट शैली की ज़रूरत है, मैंने अपने प्रश्न में जानकारी जोड़ा। आपके जवाब के लिए – Eyal

उत्तर

2

वैसे मैंने कोर टेक्स्ट का उपयोग किए बिना इसे स्वयं लागू करने का निर्णय लिया है, मैंने अभी एक दृश्य स्ट्रक्चर बनाया है जो सभी इंडेंटेशन स्वयं को स्वयं बनाता है, और आपको इसे अनुकूलित करने की अनुमति देता है।

कार्यान्वयन में रुचि रखते आप सभी के लिए, आप स्रोत कोड और यहाँ एक उदाहरण परियोजना देख सकते हैं:
ECListView Project

0

UILabel यह कटौती करने के लिए आप विशिष्ट लेआउट आवश्यकताओं के किसी भी प्रकार है, तो नहीं जा रहा है। इसके लिए, आपको कोर टेक्स्ट में खोदने की आवश्यकता होगी। अच्छी खबर यह है कि कोर टेक्स्ट आपको किसी भी तरह का टेक्स्ट लेआउट करने देगा जो आप कल्पना कर सकते हैं। बुरी खबर यह है कि वह सारी शक्ति इसके साथ कुछ जटिलता लाती है, इसलिए इसका उपयोग करने के लिए आपको कुछ समय निवेश करना होगा कि ढांचा कैसे काम करता है।

एक वैकल्पिक कुछ स्थितियों में उपयुक्त है अपने पाठ प्रदर्शित करने के लिए एक वेब दृश्य का उपयोग करने के लिए है। UIWebView आपको HTML और CSS का उपयोग करके प्रबंधित कर सकते हैं जो भी पाठ लेआउट आप कर सकते हैं।

+0

10x, मैंने कल्पना की कि मुझे कोर टेक्स्ट फ्रेमवर्क का उपयोग करने की आवश्यकता होगी .. यह बहुत सामान्य मुद्दा है, मुझे लगता है कि बहुत से लोग पहले से ही इस समस्या का सामना कर रहे हैं और कुछ सामान्य समाधान लागू किए हैं। इसलिए मैं फिर से पहिया का आविष्कार नहीं करता लेकिन कुछ कोड स्निपेट या ट्यूटोरियल के लिए कुछ संदर्भ प्राप्त करता हूं। – Eyal

25

यह - [UILabel setAttributedText:] साथ iOS6 में कुछ हद तक संभव है।

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.headIndent = 29; 

myLabel.attributedText = [[NSAttributedString alloc] initWithString: 
    @"1.\tShort line.\n2.\tLong line with content that triggers wrapping.\n3.\tShort line." 
    attributes:@{NSParagraphStyleAttributeName: paragraphStyle}]; 

Result of the above code

यह बाद में लाइनों के लिए खरोज कहते हैं। ऐसा लगता है कि आईओएस ओएसएक्स के समान टैब स्टॉप का समर्थन नहीं करता है इसलिए मैं संख्या और पाठ के बीच के अंतर को समायोजित करने का कोई तरीका नहीं देख रहा हूं। CoreText में यह संभवतः संभव है।

बेशक , आप भी सिर्फ एक UIWebView साथ लेबल की जगह और प्रदर्शन की कीमत पर आईओएस के सभी संस्करणों पर पूर्ण स्वरूपण नियंत्रण हो सकता था।

+0

धन्यवाद लेकिन मुझे आईओएस 5 समाधान – Eyal

+1

की आवश्यकता है बिल्कुल मुझे क्या चाहिए – onmyway133

+1

यह शानदार है, धन्यवाद! –