2010-10-10 9 views
9

मैं कोर टेक्स्ट के साथ समृद्ध टेक्स्ट खींच सकता हूं, समस्या टेक्स्ट के साथ बहती छवियों को रख रही है। (आईओएस एसडीके 4.1)CoreText के साथ समृद्ध-पाठ के बीच छवियों को कैसे आकर्षित करें? (आईओएस)

मैं किसी प्रकार का समृद्ध-पाठ खींचने की कोशिश करता हूं। समस्या डिजाइनर पाठ के बीच कई प्रतीक रखा है।

Here is a word <an icon image>, and another words. 
The image(<another icon>) should be placed like a glyph. 
It's part of text, not an example. 

<icon> चित्र हैं: तो पाठ क्या मैं आकर्षित करने के लिए है कुछ इस तरह है। (यह एक कोड नहीं है। बस एक उदाहरण।)

मैं इसे मैन्युअल रूप से बाहर रखकर इसे आकर्षित कर सकता हूं, लेकिन जटिल टेक्स्ट लेआउट व्यवहार को रखना मुश्किल है। तो मुझे कोर टेक्स्ट के साथ इसे आकर्षित करने का एक तरीका मिल रहा है।

उत्तर

9

मुझे समाधान मिला।

गैर-पाठ सामग्री डालने की कुंजी CTRunDelegate है। Core Text गैर-पाठ सामग्री का समर्थन नहीं करता है, इसलिए आपको उनके लिए रिक्त स्थान बनाना होगा, और उन्हें बाद में खींचें या रखें।

NSAttributedString का एक हिस्सा kCTRunDelegateAttributeName के साथ जिम्मेदार प्रत्येक ग्लिफ की चौड़ाई निर्धारित करने के लिए पंजीकृत कॉलबैक को कॉल करेगा। यह आपको प्रत्येक गैर-टेक्स्ट ऑब्जेक्ट के लिए रिक्त स्थान बनाने देगा।

हालांकि, Core Text के साथ पाठ खींचने के बाद, फ्रेम/लाइन/रन के साथ संग्रहीत लेआउट जानकारी अमान्य हो जाएगी। तो आपको फ्रेमसेट/टाइपसेटर के साथ लेआउट के बाद गैर-पाठ सामग्री को आकर्षित/स्थानांतरित करना होगा, लेकिन ड्राइंग से पहले।

यह लिंक CTRunDelegate के बुनियादी उपयोग का वर्णन:
How to use CTRunDelegate in iPad?


कोर पाठ के साथ एक समस्या है। मूल रूप से, CTRunDelegate CTRunDelegateCallbacks.getAscent और CTRunDelegateCallbacks.getDescent के माध्यम से परिवर्तनीय चौड़ाई और लंबवत संरेखण का समर्थन करने के लिए डिज़ाइन किया गया है। लेकिन लंबवत संरेखण सुविधा वर्तमान में काम नहीं करती है। यह एक बग हो सकता है।

मैं यहाँ इस समस्या का वर्णन किया: Aligning multiple sized text vertical center instead of baseline with Core Text in iOS

आप इस समस्या के बारे में जानकारियां हैं, तो कृपया लिंक पर मेरे सवाल देखें।

3

आप बस दिए गए सीटीआरन के लिए एक प्रतिनिधि निर्धारित करते हैं और प्रतिनिधि वस्तु कोर टेक्स्ट को जानने के लिए ज़िम्मेदार है सीटीआरन चढ़ाई अंतरिक्ष, मूल स्थान और चौड़ाई क्या है।

जब कोर टेक्स्ट सीटीआरयूएन तक पहुंचता है जिसमें सीटीआरयूएन डिलीगेट होता है तो यह प्रतिनिधि से पूछता है - डेटा के इस हिस्से के लिए मुझे कितनी चौड़ाई छोड़नी चाहिए, यह कितना उच्च होना चाहिए? इस तरह आप पाठ में एक छेद बनाते हैं - फिर आप अपनी छवि को उस स्थान पर खींचते हैं।

enter image description here

यहाँ कोर Text.It बारे में एक ब्लॉग आप के लिए जवाब है।

How To Create a Simple Magazine App with Core Text

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