दिलचस्प पोस्ट
MySQL का उपयोग करते हुए एक यादृच्छिक और अद्वितीय 8 वर्ण स्ट्रिंग उत्पन्न करना स्वयं कार्यान्वयन के साथ एडब्ल्यूटी ईवेंट क़तार को कैसे बदलें पता लगाना है कि टीसीपी पर एक संदेश वितरित किया गया था विज़ुअल स्टूडियो 2010 हमेशा सोचता है कि परियोजना पुरानी है, लेकिन कुछ भी नहीं बदला है प्रोग्रामात्मक रूप से एक UIScrollView स्क्रॉल करें AngularJS त्रुटि .सुविधा एक फ़ंक्शन नहीं है IntelliJ IDEA के भीतर SBT का उपयोग कर एक उबेर जार (फैट जार) कैसे बना सकता है? स्ट्रिंग सी # – पूरे शब्द मैच की तुलना करें जब आप "साथ (नोलॉक)" का उपयोग करना चाहिए NSFetchedResultsController के साथ predicate विभिन्न NSManagedObjectContext से विलय परिवर्तनों की उपेक्षा पायथन सॉर्ट लिस्ट सूची / चढ़ते हुए और उसके बाद डेडिंग java.lang.RuntimeException: असंगत स्रोत कोड – इसका कारण क्या हो सकता है? @ ट्रेडैजनिकल एनोटेशन कहां से संबंधित है? पूर्णांक प्रभाग: आप डबल कैसे बनाते हैं? JSP: जेएसटीएल का <c: out> टैग

बहिष्कृत-आकार के लिए विस्थापन के लिए प्रतिस्थापन: विवश करने के लिए: रेखारेखामोड: आईओएस 7 में?

आईओएस 7 में, विधि:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode 

और विधि:

 - (CGSize)sizeWithFont:(UIFont *)font 

नापसंद हैं मैं कैसे बदल सकता हूँ

 CGSize size = [string sizeWithFont:font constrainedToSize:constrainSize lineBreakMode:NSLineBreakByWordWrapping]; 

तथा:

 CGSize size = [string sizeWithFont:font]; 

Solutions Collecting From Web of "बहिष्कृत-आकार के लिए विस्थापन के लिए प्रतिस्थापन: विवश करने के लिए: रेखारेखामोड: आईओएस 7 में?"

आप यह कोशिश कर सकते हैं:

 CGRect textRect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:FONT} context:nil]; CGSize size = textRect.size; 

बस "फॉंट" को "[UIFont font ….]" के लिए बदलें

जैसा कि हम आकार का उपयोग नहीं कर सकते हैंसबसे अधिक के लिए सभी iOS के लिए 4.3 से अधिक हमें सशर्त कोड 7.0 और पिछले आईओएस लिखना है।

1) समाधान 1:

 if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { CGSize size = CGSizeMake(230,9999); CGRect textRect = [specialityObj.name boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont fontWithName:[AppHandlers zHandler].fontName size:14]} context:nil]; total_height = total_height + textRect.size.height; } else { CGSize maximumLabelSize = CGSizeMake(230,9999); expectedLabelSize = [specialityObj.name sizeWithFont:[UIFont fontWithName:[AppHandlers zHandler].fontName size:14] constrainedToSize:maximumLabelSize lineBreakMode:UILineBreakModeWordWrap]; //iOS 6 and previous. total_height = total_height + expectedLabelSize.height; } 

2) समाधान 2

 UILabel *gettingSizeLabel = [[UILabel alloc] init]; gettingSizeLabel.font = [UIFont fontWithName:[AppHandlers zHandler].fontName size:16]; // Your Font-style whatever you want to use. gettingSizeLabel.text = @"YOUR TEXT HERE"; gettingSizeLabel.numberOfLines = 0; CGSize maximumLabelSize = CGSizeMake(310, 9999); // this width will be as per your requirement CGSize expectedSize = [gettingSizeLabel sizeThatFits:maximumLabelSize]; 

पहला समाधान कभी-कभी ऊँचाई का उचित मूल्य वापस करने में विफल रहता है। तो दूसरे समाधान का उपयोग करें जो पूरी तरह से काम करेगा।

दूसरा विकल्प काफी अच्छी तरह से और सशर्त कोड के बिना सभी आईओएस में आसानी से काम कर रहा है।

यहां सरल समाधान है:

आवश्यकताएं:

 CGSize maximumSize = CGSizeMake(widthHere, MAXFLOAT); UIFont *font = [UIFont systemFontOfSize:sizeHere]; 

अब के रूप में constrainedToSizeusage:lineBreakMode: आईओएस 7.0 में उपयोग नापसंद किया गया है:

 CGSize expectedSize = [stringHere sizeWithFont:font constrainedToSize:maximumSize lineBreakMode:NSLineBreakByWordWrapping]; 

अब IOS 7.0 के अधिक संस्करण में उपयोग किया जाएगा:

 // Let's make an NSAttributedString first NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:stringHere]; //Add LineBreakMode NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; [paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping]; [attributedString setAttributes:@{NSParagraphStyleAttributeName:paragraphStyle} range:NSMakeRange(0, attributedString.length)]; // Add Font [attributedString setAttributes:@{NSFontAttributeName:font} range:NSMakeRange(0, attributedString.length)]; //Now let's make the Bounding Rect CGSize expectedSize = [attributedString boundingRectWithSize:maximumSize options:NSStringDrawingUsesLineFragmentOrigin context:nil].size; 

ज्यादातर मामलों में मैं विधि आकार के साथ प्रयोग किया थाफथ: बाधित: ToSize: lineBreakMode: अपने पाठ को समायोजित करने के लिए यूआईएलबल के न्यूनतम आकार का अनुमान लगाने के लिए (विशेषकर जब लेबल को यूआईटीबल वीजसेल के अंदर रखा जाना है) …

… यदि यह आपकी स्थिति ठीक है, तो आप पद्धति का इस्तेमाल कर सकते हैं:

 CGSize size = [myLabel textRectForBounds:myLabel.frame limitedToNumberOfLines:mylabel.numberOfLines].size; 

आशा है कि यह मदद कर सकता है

नीचे दो सरल तरीके हैं जो इन दो बहिष्कृत तरीकों को बदल देंगे।

और यहां प्रासंगिक संदर्भ हैं:

यदि आप NSLineBreakByWordWrapping का उपयोग कर रहे हैं, तो आपको डिफ़ॉल्ट रूप से NSParagraphStyle निर्दिष्ट करने की आवश्यकता नहीं है, जैसा कि https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index है। एचटीएमएल # // apple_ref / OCC / clm / NSParagraphStyle / defaultParagraphStyle

नापसंद विधियों के परिणामों से मेल खाने के लिए आपको आकार की सीमा मिलनी चाहिए। https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize : ऑप्शन : विशेषताएँ : चिह्न टेक्स्ट :

 + (CGSize)text:(NSString*)text sizeWithFont:(UIFont*)font { CGSize size = [text sizeWithAttributes:@{NSFontAttributeName: font}]; return CGSizeMake(ceilf(size.width), ceilf(size.height)); } + (CGSize)text:(NSString*)text sizeWithFont:(UIFont*)font constrainedToSize:(CGSize)size{ CGRect textRect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: font} context:nil]; return CGSizeMake(ceilf(textRect.size.width), ceilf(textRect.size.height)); } 
 UIFont *font = [UIFont boldSystemFontOfSize:16]; CGRect new = [string boundingRectWithSize:CGSizeMake(200, 300) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: font} context:nil]; CGSize stringSize= new.size; 

[स्वीकार किया गया उत्तर किसी श्रेणी में अच्छी तरह से काम करता है। मैं नापसंद विधि के नामों को ओवरराइट कर रहा हूं I यह एक अच्छा विचार है? Xcode 6.x में कोई शिकायत के साथ काम करने के लिए लगता है]

यह काम करता है यदि आपका परिनियोजन लक्ष्य 7.0 या अधिक है श्रेणी NSString (Util)

NSString + Util.h

 - (CGSize)sizeWithFont:(UIFont *) font; - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; 

NSString + Util.m

 - (CGSize)sizeWithFont:(UIFont *) font { NSDictionary *fontAsAttributes = @{NSFontAttributeName:font}; return [self sizeWithAttributes:fontAsAttributes]; } - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size { NSDictionary *fontAsAttributes = @{NSFontAttributeName:font}; CGRect retVal = [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:fontAsAttributes context:nil]; return retVal.size; } 
 UIFont *font = [UIFont fontWithName:@"Courier" size:16.0f]; NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; paragraphStyle.alignment = NSTextAlignmentRight; NSDictionary *attributes = @{ NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle }; CGRect textRect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; CGSize size = textRect.size; 

दो उत्तर 1 + 2 से