2013-02-13 50 views
5

मुझे this question के समान समस्या है लेकिन अधिक जटिल है।मैं पाठ को कैसे आकर्षित करूं जो ऊपर और नीचे दाईं ओर ऑब्जेक्ट्स के चारों ओर बहती है?

+-----------------------+----+ 
| Lorem ipsum dolor sit |DATE| 
| amet, consectetur  +----+ 
| adipiscing elit. Integer | 
| ligula lectus, convallis | 
| non scelerisque  +-----+ 
| quis, tempor at nibh |BADGE| 
+----------------------+-----+ 

मैं सेल चाहते बड़ा या छोटा होना करने के लिए अगर वहाँ कम या ज्यादा है: मैं जो एक तिथि का लेबल शीर्ष सही और एक बिल्ला नीचे का अधिकार है, तो जैसे एक तालिका दृश्य कक्ष में पाठ आकर्षित करने के लिए कोशिश कर रहा हूँ पाठ:

+-----------------------+----+ 
| Lorem ipsum dolor sit |DATE| 
| amet, consectetur  +----+ 
| adipiscing elit. Integer | 
| ligula lectus, convallis | 
| non scelerisque quis,  | 
| tempor at nibh. Curabitur | 
| eget diam ligula.   | 
| Pellentesque a elit  | 
| dolor, a ullamcorper +-----+ 
| risus.    |BADGE| 
+----------------------+-----+ 

पुराने प्रश्न का उत्तर एक परियोजना के लिंक जो दिखाता है कि ज्ञात आकृतियों के चारों ओर पाठ कैसे बहाना है। लेकिन मुझे पहले से आकार नहीं पता है, क्योंकि मुझे पाठ के निचले भाग के साथ संरेखित करने के लिए बैज की आवश्यकता है।

क्या यह भी संभव है? यदि हां, तो मैं पाठ कैसे आकर्षित करूं, और मैं कैसे काम करूं कि यह कितना लंबा होगा?

उत्तर

3

आपका मामला बहुत खराब नहीं है क्योंकि सबकुछ एक आयताकार है और ऐसा लगता है कि चौड़ाई तय की गई है। कुछ स्टार्टर कोड के लिए, ColumnView देखें।

यहाँ कैसे मैं इसे हमला करेंगे: शीर्ष के मध्य, और नीचे:

  • तीन आयतों रहे हैं। ऊपर और नीचे आयाम ज्ञात हैं। केवल बीच लंबवत खिंचाव कर सकते हैं।
  • CTFrameSetter बनाएं। शीर्ष बॉक्स के लिए पथ बनाएं और इसे बाहर रखने के लिए CTFrame बनाएं। वह हिस्सा निश्चित है, इसलिए इसे पकड़ो। यदि सभी पाठ फिट हैं, तो आप कर चुके हैं।
  • शीर्ष बॉक्स के ठीक नीचे तुरंत मध्य बॉक्स के लिए पथ बनाएं। इसे जितना छोटा हो उतना छोटा बनाएं (मुझे लगता है कि आप कुछ स्पेस चाहते हैं, भले ही पाठ शीर्ष और निचले बक्से में फिट हो)।
  • मध्य फ्रेम के नीचे तुरंत नीचे दिए गए बॉक्स के लिए पथ बनाएं।
  • मध्य और निचले फ्रेम के लिए फ्रेम बनाने के लिए CTFrameSetter का उपयोग करें। यह पूछें कि यह लेआउट में कितना पाठ सक्षम था। अगर यह सब खत्म हो गया, तो आप कर चुके हैं। यह वह छोटा बॉक्स है जिसे आप आकर्षित करना चाहते हैं।
  • यदि यह बह गया है, तो एक पंक्ति से मध्य बॉक्स के आकार को बढ़ाएं। मध्य और निचले बक्से को दोबारा डालने का प्रयास करें। जब तक यह फिट बैठता है दोहराएं।
  • अब आप पूरे दृश्य का आकार जानते हैं और सबकुछ बाहर रख सकते हैं।

वहां ऑप्टिमाइज़ करने के लिए कुछ जगहें हैं, लेकिन यह आपके विचार से शायद तेज़ है।

1

मैंने लंबे समय से इसे अपने द्वारा भेजे गए पाठ के आधार पर आकार में पॉपअप बॉक्स प्राप्त करने का प्रयास करने के लिए लंबे समय से संघर्ष किया। आम तौर पर चौड़ाई तय होती है और आप केवल ऊंचाई की गणना करने की कोशिश कर रहे हैं। https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html

वहाँ भी पुन: प्रयोज्य श्रेणियों मैं यहां पाया का एक अच्छा सेट है: यहां डेवलपर दस्तावेज़ में एक लेख है http://sheepsystems.com/sourceCode/sourceStringGeometrics.html

भी ठीक से कोशिकाओं का आकार बदलने के लिए, पाठ बॉक्स के आकार को बदलने में सक्षम होने के और सेल पर दिनांक और बैज को ओवरले करना और इसके चारों ओर पाठ प्रवाह रखना कोई आसान काम नहीं होगा। आप टेबल सेल को फिर से डिजाइन करने के बारे में सोच सकते हैं ताकि आप इसे थोड़ा आसान बना सकें। इस तरह कुछ:

+-----------------------+----+ 
| BADGE|    |DATE| 
|+-----+  TITLE  +----+ 
| dolor sit amet, consectetur|  
| adipiscing elit. Integer | 
| ligula lectus, convallis | 
| non scelerisque quis,  | 
| tempor at nibh. Curabitur | 
| eget diam ligula.   | 
| Pellentesque a elit  | 
| dolor, a ullamcorper risus.| 
+----------------------------+