2012-11-17 16 views
10

क्या न्यूनतम स्केलेफ़ैक्टर का उपयोग करना संभव है और एक ही समय में टेक्स्ट स्ट्रिंग को जिम्मेदार ठहराया जा सकता है?UILabel विशेषताकृत टेक्स्ट और न्यूनतम स्केलफ़ैक्टर

 [myLabel setFrame:CGRectMake(6, 0, 200, 25)]; 
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, 20)]; 
    myLabel.attributedText = attStr; 
    [myLabel setAdjustsFontSizeToFitWidth:YES]; 
    [myLabel setAdjustsLetterSpacingToFitWidth:YES]; 
    [myLabel setMinimumScaleFactor:0.3]; 

यह काम नहीं प्रतीत होता है। अगर मैं myLabel.text को सेट करता हूं तो यह अपेक्षा के अनुसार स्केल करता है। मैं सही तरीके से काम करने के लिए स्केलिंग कैसे प्राप्त करूं?

+0

क्या आपने इस कोड को लागू करने के बाद आकार टॉफ़िट की कोशिश की है ... –

+0

यह एक चाल हो सकता है .. –

+0

नहीं, ऐसा नहीं है। SizeToFit लेबल के फ्रेम के आकार को विस्तारित करता है जो फिट करने के लिए काफी बड़ा होता है। –

उत्तर

2

आप मुट्ठी 20 चरित्र भाग ले सकते हैं और इसकी चौड़ाई मिलता है, तो आप एक ही तरह का उपयोग कर बाकी हिस्सा की चौड़ाई ले जा सकते हैं:

CGSize maximumLabelSize = CGSizeMake(500.0,20.0);//write a really long width 

//this will turn the expected length of the labels.. 
CGSize expectedFirstLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringToIndex:21] 
sizeWithFont:[UIFont boldSystemFontOfSize:17] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 


CGSize expectedLastLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringFromIndex:20] 
sizeWithFont:[UIFont normalSystemFontOfSize:15] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 

तो आप उनकी लंबाई की दर .. पूर्व के लिए पता चल जाएगा। पहला भाग 140 पीएक्स है, बाकी 260 पीएक्स है और आपका लेबल क्षेत्र 100 पीएक्स, है तो आप 35 पीएक्स और 65 पीएक्स के साथ 2 अलग-अलग लेबल बना सकते हैं। और फिर आप दोनों लेबलों के लिए setAdjustsFontSizeToFitWidth का उपयोग कर सकते हैं।