2009-12-27 7 views
6

मैं वांछित चौड़ाई फिट करने के लिए लाइनों में टूटी हुई एनएसएसटींग प्राप्त करने की कोशिश कर रहा हूं (क्योंकि यह sizeWithFont:constrainedToSize: के अंदर होगा)। sizeWithFont में ब्रेक होने पर अनुमान लगाने के लिए ऐसा करने का कोई बेहतर तरीका है?लाइनों में एनएसएसटींग को तोड़ना (वांछित चौड़ाई फिट करने के लिए)

+0

क्या आप अलग-अलग लाइनों की आवश्यकता के बारे में थोड़ा और विस्तार से जा सकते हैं? यदि आप बस किसी दिए गए स्थान में स्ट्रिंग को आकर्षित करना चाहते हैं तो यह काफी सरल है। –

+0

मैं एक पृष्ठभूमि बना रहा हूं - जैसा कि आपको लेबल चुनने के दौरान मिलता है - एक लेबल के लिए। इसकी चौड़ाई प्रत्येक पंक्ति (अलग-अलग लंबाई के साथ) के लिए भिन्न होती है, इसलिए मुझे उन्हें अलग से आवश्यकता होगी। – Pyetras

उत्तर

2

यदि NSLayoutManager वास्तव में अनुपलब्ध है, तो आप एक अधिक अक्षम समाधान के साथ फंस सकते हैं: स्ट्रिंग के पहले शब्द से शुरू होने, प्रत्येक बाद के शब्द को जोड़ने और परिणामी स्ट्रिंग पर sizeWithFont: (आदि) विधि का उपयोग करके। जब CGSize परिवर्तनों की ऊंचाई बदलती है, तो सबसे हाल ही में जोड़ा गया शब्द वह था जो लाइन ब्रेक का कारण बनता था, और आप इस प्रकार स्ट्रिंग को विभाजित कर सकते हैं।

+0

यही वह है जो मैंने समाप्त किया – Pyetras

1

अद्यतन: यह स्पष्ट रूप से केवल मैक प्लेटफ़ॉर्म पर लागू होता है। हालांकि NSLayoutManager को विशेष रूप से आईफोन की स्ट्रिंग ड्रॉइंग गाइड (दिसंबर, 200 9 तक) में संदर्भित किया गया है, न तो यह और न ही एनएसएट्रिब्यूटेड स्ट्रिंग आईफोन प्लेटफार्म पर उपलब्ध है। शोर के लिए खेद है।

मूल रिस्पांस

NSLayoutManager अपने दोस्त आप एक निश्चित चौड़ाई की तर्ज में स्वयं स्ट्रिंग विभाजित करने के लिए, गुण (यानी की दी गई सेट के साथ देख रहे हैं है, तो आप वास्तविक स्थानों जानने की जरूरत जहां स्ट्रिंग लपेटा जाता है)।

आप केवल रेखाओं को रैप करने जब ड्राइंग देख रहे हैं और आप परवाह नहीं है जहां, NSAttributedString के (AppKit परिवर्धन) तरीके -drawInRect: या -drawWithRect:options: ठीक करना होगा।

+1

न तो NSLayoutManager और न ही NSAttributedString आईफोन पर उपलब्ध हैं। –

+1

मैं लाइनों को तुरंत खींचने वाला नहीं हूं (इसलिए), न तो एनएसएट्रिब्यूटेड स्ट्रिंग और न ही एनएसएसटींग + यूआईकिट अतिरिक्त मदद करने जा रहे हैं। – Pyetras

+0

ओले: उलझन में। NSLayoutManager को विशेष रूप से आईफोन देव सेंटर की लाइब्रेरी में स्ट्रिंग प्रोग्रामिंग गाइड में संदर्भित किया गया है: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Strings/Articles/DrawingStrings.html –

1

अद्यतन: नीचे टिप्पणी के आधार पर (आप स्ट्रिंग आकर्षित कर सकते हैं, लेकिन एक पृष्ठभूमि आकर्षित नहीं कर सकता स्ट्रिंग कवर करने के लिए), मुझे लगता है कि आपका सर्वश्रेष्ठ दांव एक UIWebView का उपयोग करें और आकर्षित करने के लिए सीएसएस का उपयोग होगा अपने पृष्ठभूमि। के बाद से आईओएस 7. प्रलेखन here है


NSString UIKit Additions अपनी आवश्यकताओं, विशेष रूप से

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font 
     lineBreakMode:(UILineBreakMode)lineBreakMode; 

फिट हो सकता है और/या

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font 
     lineBreakMode:(UILineBreakMode)lineBreakMode 
      alignment:(UITextAlignment)alignment; 
+0

के साथ प्रश्न पर टिप्पणियां देखें और पंक्तियों को चित्रित करने वाले यहोशू का उत्तर मुद्दा नहीं है। वह वास्तव में यह जानने की आवश्यकता है कि लाइन ब्रेक कहां है, पृष्ठभूमि को खींचने के उद्देश्य से जो प्रत्येक पंक्ति के अंत तक फैली हुई है। –

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