2013-02-10 7 views
9

के साथ UILabel ऑटो-सिकंक करें मेरे पास UILabel है जिसमें दो अलग-अलग तारों को एक नई पंक्ति से अलग किया गया है। FIrst स्ट्रिंग का फ़ॉन्ट आकार 17 पर सेट किया गया है और दूसरा एक से 14. मैं चाहता हूं कि मेरा पहला NSMutableAttributedString न्यूनतम फ़ॉन्ट आकार में बदल दिया जाए यदि इसकी सामग्री एक पंक्ति में फिट नहीं हो सकती है।आईओएस - जिम्मेदार पाठ

क्या यह संभव है?

सादे पाठ के लिए आईबी में "न्यूनतम फ़ॉन्ट आकार में स्वत: सिकुड़ने" को सेट करके UILabel व्यवहार को कॉन्फ़िगर करना बहुत आसान है, लेकिन यह नहीं पता कि जिम्मेदार टेक्स्ट के लिए इसे कैसे किया जाए।

NSString *eventName = @"Looong Event Name"; 
NSString *placeString = @"My place"; 

eventName = [eventName stringByAppendingString:@"\n"];   
NSMutableAttributedString *attrName = [[NSMutableAttributedString alloc] initWithString:eventName]; 
[attrName addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, [eventName length])]; 


NSMutableAttributedString *attrPlace = [[NSMutableAttributedString alloc] initWithString:placeString]; 
[attrPlace addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, placeString.length)]; 
[attrPlace addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, placeString.length)]; 

    NSMutableAttributedString *finalString = [[NSMutableAttributedString alloc] initWithAttributedString:attrName]; 
    [finalString appendAttributedString:attrPlace]; 

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; 

    nameLabel.attributedText = finalString; 
+0

जब मैंने इसे करने की कोशिश की तो यह काफी सिरदर्द में बदल गया। मैं इसे एक उत्तर के रूप में पोस्ट नहीं करूंगा क्योंकि ऐसा लगता है कि एक बेहतर समाधान है जिसे मैं नहीं ढूंढ पाया। लेकिन, मैंने अपने सभी स्ट्रिंग के गुणों को प्रोग्रामेटिक रूप से कॉन्फ़िगर करना समाप्त कर दिया (उन लोगों को छोड़कर जिन्हें आकार के साथ करना है) और लेबल को आईबीओटलेट बनाया, और "इंटॉश्रिंक" में "न्यूनतम फ़ॉन्ट आकार" को कॉन्फ़िगर किया गया विशेषता गुणक में ड्रॉप किया गया। –

उत्तर

4

मुझे लगता है कि यह एक अपने earlier question से पर का पालन करें:

यहाँ मेरी कोड है।

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

+0

फिर से धन्यवाद! :-) – Oleg

+0

तो क्या आपने इसे ओलेग हल किया? – Simon

+0

हां, मैं इसके बजाय दो अलग सादे टेक्स्ट UILabels का उपयोग कर समाप्त हुआ। – Oleg

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