पदावनत आकार के लिए प्रतिस्थापनWithFont: iOS 7 में?


320

IOS 7 में, sizeWithFont:अब पदावनत हो गया है। प्रतिस्थापन विधि में अब मैं UIFont ऑब्जेक्ट में कैसे पास करूं sizeWithAttributes:?

जवाबों:


521

sizeWithAttributes:इसके बजाय का उपयोग करें , जो अब एक लेता है NSDictionaryUITextAttributeFontइस तरह से कुंजी और अपने फ़ॉन्ट ऑब्जेक्ट के साथ जोड़ी में पास करें:

CGSize size = [string sizeWithAttributes:
    @{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];

// Values are fractional -- you should take the ceilf to get equivalent values
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));

60
डुप्लिकेट कोड / etc को रोकने के लिए NSStringa UILabel( a के मामले में, लेकिन अक्सर ऐसा होता है) के साथ काम करते समय , आप इसके [UIFont systemFontOfSize:17.0f]साथ प्रतिस्थापित भी कर सकते हैं label.font- मौजूदा डेटा को संदर्भित करके कोड रखरखाव में मदद करता है बनाम आप इसे कई बार टाइप कर रहे हैं या सभी पर स्थिरांक का संदर्भ दे रहे हैं। जगह, आदि
21

8
@toblerpwn यह संभव है कि लेबल मौजूद नहीं है और आप एक सैद्धांतिक लेबल की गणना करने की कोशिश कर रहे हैं।
बॉटबोट

5
मैं इस उदाहरण का उपयोग कैसे करूँगा आकार प्राप्त करने के लिए। एक ऐसे लेबल के साथ जो उदाहरण के लिए 250 की निश्चित चौड़ाई प्राप्त करता है? या यदि इसका लेबल ऑटोलैटआउट विच के साथ चौड़ाई का एक प्रतिशत लेता है और मैं भू-भाग में जाता हूं।
पीडोप्रिनपीस

12
@Pedroinpeace आप ज्यादातर मामलों में boundingRectWithSize:options:attributes:context:पास होने के बजाय इसका इस्तेमाल करेंगे CGSizeMake(250.0f, CGFLOAT_MAX)
जेम्स कुआंग

9
आकार पर ध्यान देने योग्य कुछ और बातेंविशेषताएं: 100% समकक्ष नहीं है। sizeWithFont पूर्णांक (पिक्सेल) मानों के लिए आकारों को गोल करने के लिए उपयोग किया जाता है। परिणामी ऊंचाई / चौड़ाई पर छत का उपयोग करने का सुझाव दें या यदि आप स्थैतिक गणना के लिए इसका उपयोग करते हैं तो आपको धुंधली कलाकृतियाँ (एस्प नॉन रेटिना एचडब्ल्यू) मिल सकती हैं।
निक H247

172

मेरा मानना ​​है कि फ़ंक्शन को हटा दिया गया था क्योंकि NSString+UIKitफ़ंक्शन की श्रृंखला ( sizewithFont:..., आदि) UIStringDrawingलाइब्रेरी पर आधारित थी, जो थ्रेड सुरक्षित नहीं था। यदि आपने उन्हें मुख्य थ्रेड (किसी भी अन्य UIKitकार्यक्षमता की तरह ) पर चलाने की कोशिश की , तो आपको अप्रत्याशित व्यवहार मिलेगा। विशेष रूप से, यदि आप एक साथ कई थ्रेड्स पर फ़ंक्शन चलाते हैं, तो यह संभवतः आपके ऐप को क्रैश कर देगा। यही कारण है कि आईओएस 6 में, उन्होंने इसके लिए एक boundingRectWithSize:...विधि पेश की NSAttributedString। यह NSStringDrawingपुस्तकालयों के ऊपर बनाया गया था और थ्रेड सुरक्षित है।

यदि आप नए NSString boundingRectWithSize:...फ़ंक्शन को देखते हैं, तो यह ए के रूप में उसी तरह एक विशेषता सरणी के लिए पूछता है NSAttributeString। अगर मुझे अनुमान लगाना है, तो NSStringआईओएस 7 में यह नया फ़ंक्शन NSAttributeStringiOS 6 से फ़ंक्शन के लिए केवल एक आवरण है ।

कि नोट, यदि आप केवल iOS 6 और iOS 7 समर्थन कर रहे थे, तो मैं निश्चित रूप से अपने के सभी बदल जाएगा NSString sizeWithFont:...करने के लिए NSAttributeString boundingRectWithSize। यदि आप एक अजीब बहु-थ्रेडिंग कॉर्नर केस करते हैं तो यह आपको बहुत सिरदर्द से बचाएगा! यहां बताया गया है कि मैंने कैसे रूपांतरण किया NSString sizeWithFont:constrainedToSize::

क्या हुआ करते थे:

NSString *text = ...;
CGFloat width = ...;
UIFont *font = ...;
CGSize size = [text sizeWithFont:font 
               constrainedToSize:(CGSize){width, CGFLOAT_MAX}];

के साथ प्रतिस्थापित किया जा सकता है:

NSString *text = ...;
CGFloat width = ...;
UIFont *font = ...;
NSAttributedString *attributedText =
    [[NSAttributedString alloc] initWithString:text 
                                    attributes:@{NSFontAttributeName: font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                           context:nil];
CGSize size = rect.size;

कृपया दस्तावेज़ का उल्लेख करें:

आईओएस 7 और बाद में, यह विधि आंशिक आकार (लौटे के आकार के घटक में CGRect) लौटाती है ; विचारों को आकार देने के लिए लौटे आकार का उपयोग करने के लिए, आपको छत फ़ंक्शन का उपयोग करके इसके मूल्य को निकटतम उच्च पूर्णांक तक बढ़ाने के लिए उपयोग करना चाहिए।

तो आकार की चौड़ाई या चौड़ाई को बाहर निकालने के लिए इस्तेमाल किया जा सकता है।

CGFloat height = ceilf(size.height);
CGFloat width  = ceilf(size.width);

बाउंडिंगRectWithSize को iOS 6.0 में पदावनत किया गया है।
नीरव

2
@ नीरव मुझे पदावनति का कोई उल्लेख नहीं दिखता। क्या आप मुझे यह इंगित कर सकते हैं कि यह कहाँ पदावनत है? धन्यवाद! ( developer.apple.com/library/ios/documentation/uikit/reference/… )
श्री टी।

2
शायद @ नीरव का मतलब था कि यह iOS 6 में NSString के लिए उपलब्ध नहीं था (जिसका उत्तर अप्रत्यक्ष रूप से उल्लेख किया गया है)?
newenglander

1
@VagueExplanation मैंने अभी कोशिश की है और अभी भी NSAttributedString के लिए पदावनत नहीं किया गया है। यह भी प्रलेखन में पदावनत नहीं कहता है।
श्री टी।

5
छत () का उपयोग करके उल्लेख के लिए शानदार। कहीं और उल्लेख नहीं है कि और मेरा आकार हमेशा थोड़ा बहुत छोटा था। धन्यवाद!
जोनाथन ब्राउन

29

जैसा कि आप sizeWithFontApple डेवलपर साइट पर देख सकते हैं कि यह पदावनत है इसलिए हमें इसका उपयोग करने की आवश्यकता है sizeWithAttributes

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

NSString *text = @"Hello iOS 7.0";
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
    // code here for iOS 5.0,6.0 and so on
    CGSize fontSize = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" 
                                                         size:12]];
} else {
    // code here for iOS 7.0
   CGSize fontSize = [text sizeWithAttributes: 
                            @{NSFontAttributeName: 
                              [UIFont fontWithName:@"Helvetica" size:12]}];
}

17
इस [NSObject respondsToSelector:]तरह से विधि का उपयोग करने के लिए इस तरह से बेहतर है: stackoverflow.com/a/3863039/1226304
derpoliuk

16

मैंने इस समस्या को संभालने के लिए एक श्रेणी बनाई, यहाँ यह है:

#import "NSString+StringSizeWithFont.h"

@implementation NSString (StringSizeWithFont)

- (CGSize) sizeWithMyFont:(UIFont *)fontToUse
{
    if ([self respondsToSelector:@selector(sizeWithAttributes:)])
    {
        NSDictionary* attribs = @{NSFontAttributeName:fontToUse};
        return ([self sizeWithAttributes:attribs]);
    }
    return ([self sizeWithFont:fontToUse]);
}

इस तरह से आपको केवल ढूंढना / बदलना sizeWithFont:है sizeWithMyFont:और आपका जाना अच्छा है।


1
हालांकि यह आकार आकार के लिए ios7 + पर एक संकलक चेतावनी का उत्पादन करेगा, या आकार का संदर्भ देने के लिए <ios7 पर एक संकलन चेतावनी / त्रुटि! यदि आवश्यक हो, तो उत्तर की जांच के बजाय मैक्रो का उपयोग करना सबसे अच्छा है। लेकिन जब तक आप ioS6 एसडीके के साथ सेब को वितरित नहीं कर सकते हैं ... यह शायद नहीं है!
Nick H247

इसे सुपर्रेस चेतावन #pragma GCC डायग्नोस्टिक पर ध्यान न दें "-अच्छी तरह से घोषणाएँ"
रयान हेइटनर

10

IOS7 में मुझे टेबलव्यू के लिए सही ऊंचाई वापस करने के लिए तर्क की आवश्यकता थी: heightForRowAtIndexPath विधि, लेकिन sizeWithAttributes हमेशा स्ट्रिंग की लंबाई की परवाह किए बिना एक ही ऊंचाई देता है क्योंकि यह नहीं जानता कि यह एक निश्चित चौड़ाई तालिका सेल में डाल दिया जाएगा। । मैंने पाया कि यह मेरे लिए बहुत अच्छा काम करता है और टेबल सेल की चौड़ाई को ध्यान में रखते हुए सही ऊँचाई की गणना करता है! यह ऊपर दिए गए मिस्टर टी के उत्तर पर आधारित है।

NSString *text = @"The text that I want to wrap in a table cell."

CGFloat width = tableView.frame.size.width - 15 - 30 - 15;  //tableView width - left border width - accessory indicator - right border width
UIFont *font = [UIFont systemFontOfSize:17];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                           context:nil];
CGSize size = rect.size;
size.height = ceilf(size.height);
size.width  = ceilf(size.width);
return size.height + 15;  //Add a little more padding for big thumbs and the detailText label

7

डायनेमिक ऊंचाई का उपयोग करने वाले मल्टी-लाइन लेबल को आकार को ठीक से सेट करने के लिए अतिरिक्त जानकारी की आवश्यकता हो सकती है। आप फ़ॉन्ट और लाइन-ब्रेक मोड दोनों को निर्दिष्ट करने के लिए UIFont और NSParagraphStyle के साथ sizeWithAttributes का उपयोग कर सकते हैं।

आप पैराग्राफ शैली को परिभाषित करेंगे और इस तरह से एक एनएसडीआर का उपयोग करेंगे:

// set paragraph style
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByWordWrapping];
// make dictionary of attributes with paragraph style
NSDictionary *sizeAttributes        = @{NSFontAttributeName:myLabel.font, NSParagraphStyleAttributeName: style};
// get the CGSize
CGSize adjustedSize = CGSizeMake(label.frame.size.width, CGFLOAT_MAX);

// alternatively you can also get a CGRect to determine height
CGRect rect = [myLabel.text boundingRectWithSize:adjustedSize
                                                         options:NSStringDrawingUsesLineFragmentOrigin
                                                      attributes:sizeAttributes
                                                         context:nil];

यदि आप ऊंचाई की तलाश कर रहे हैं तो आप CGSize 'AdjustSize' या CGRect को rect.size.height प्रॉपर्टी के रूप में उपयोग कर सकते हैं।

NSParagraphStyle के बारे में अधिक जानकारी यहाँ: https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSParagraphStyle_Class-Reference/Reference.html


1
ऐसा लगता है कि समायोजित होने के तुरंत बाद एक वाक्यविन्यास मुद्दा है।
क्रिस प्रिंस

उस वाक्यविन्यास मुद्दे को पकड़ने के लिए धन्यवाद, क्रिस
बिट्संड

6
// max size constraint
CGSize maximumLabelSize = CGSizeMake(184, FLT_MAX)

// font
UIFont *font = [UIFont fontWithName:TRADE_GOTHIC_REGULAR size:20.0f];

// set paragraph style
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

// dictionary of attributes
NSDictionary *attributes = @{NSFontAttributeName:font,
                             NSParagraphStyleAttributeName: paragraphStyle.copy};

CGRect textRect = [string boundingRectWithSize: maximumLabelSize
                                     options:NSStringDrawingUsesLineFragmentOrigin
                                  attributes:attributes
                                     context:nil];

CGSize expectedLabelSize = CGSizeMake(ceil(textRect.size.width), ceil(textRect.size.height));

1
इसने मुझे सिरदर्द के घंटे बचाए, धन्यवाद किरीट, CGRect ब्लॉक से पहले की विशेषताओं और शब्दकोशों को परिभाषित करते हुए कि यह मेरे लिए क्या था ... यह भी पढ़ने में बहुत आसान है।
अज़िन मेहरानोश

3

एक फ़ंक्शन बनाएं जो UILabel का उदाहरण लेता है। और CGSize देता है

CGSize constraint = CGSizeMake(label.frame.size.width , 2000.0);
// Adjust according to requirement

CGSize size;
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){

    NSRange range = NSMakeRange(0, [label.attributedText length]);

    NSDictionary *attributes = [label.attributedText attributesAtIndex:0 effectiveRange:&range];
    CGSize boundingBox = [label.text boundingRectWithSize:constraint options: NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;

    size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height));
}
else{
    size = [label.text sizeWithFont:label.font constrainedToSize:constraint lineBreakMode:label.lineBreakMode];
}

return size;

मैं डायनेमिकली रो ऊंचाई के लिए मेरा मामला है मैंने पूरी तरह से हाईटॉफोरो विधि को हटा दिया और यूआईटेबल व्यूऑटोमेटिकडिमेशन का उपयोग किया। tableView.estimatedRowHeight = 68.0 tableView.rowHeight = UITableViewAutomaticDimension
यूजीन ब्रैगनेट्स

3

वैकल्पिक समाधान-

CGSize expectedLabelSize;
if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
{
    expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
}else{
    expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
}

1
यह दोनों iOS6 और 7. पर एक संकलक चेतावनी का उत्पादन करेगा और प्रत्येक के लिए काफी अलग व्यवहार होगा!
निक एच 247

3

@Bitand पर बिल्डिंग, यह एक नई विधि है जिसे मैंने अभी अपने NSString + अतिरिक्त श्रेणी में जोड़ा है:

- (CGRect) boundingRectWithFont:(UIFont *) font constrainedToSize:(CGSize) constraintSize lineBreakMode:(NSLineBreakMode) lineBreakMode;
{
    // set paragraph style
    NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    [style setLineBreakMode:lineBreakMode];

    // make dictionary of attributes with paragraph style
    NSDictionary *sizeAttributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName: style};

    CGRect frame = [self boundingRectWithSize:constraintSize options:NSStringDrawingUsesLineFragmentOrigin attributes:sizeAttributes context:nil];

    /*
    // OLD
    CGSize stringSize = [self sizeWithFont:font
                              constrainedToSize:constraintSize
                                  lineBreakMode:lineBreakMode];
    // OLD
    */

    return frame;
}

मैं सिर्फ परिणामी फ्रेम के आकार का उपयोग करता हूं।


2

आप अभी भी उपयोग कर सकते हैं sizeWithFont। लेकिन, आईओएस में = = 7.0 विधि दुर्घटना का कारण बनती है यदि स्ट्रिंग में अग्रणी और अनुगामी स्थान या अंत रेखाएं होती हैं \n

उपयोग करने से पहले ट्रिमिंग पाठ

label.text = [label.text stringByTrimmingCharactersInSet:
             [NSCharacterSet whitespaceAndNewlineCharacterSet]];

यह भी लागू हो सकता है sizeWithAttributesऔर [label sizeToFit]

इसके अलावा, जब भी आपके पास nsstringdrawingtextstorage message sent to deallocated instanceiOS 7.0 डिवाइस होता है, तो वह इससे निपटता है।


2

बेहतर उपयोग स्वचालित आयाम (स्विफ्ट):

  tableView.estimatedRowHeight = 68.0
  tableView.rowHeight = UITableViewAutomaticDimension

NB: 1. UITableViewCell प्रोटोटाइप को ठीक से डिज़ाइन किया जाना चाहिए (उदाहरण के लिए सेट को न भूलें UILabel.numberOfLines = 0 आदि) 2. HeightForRowAtIndexPath विधि निकालें

यहां छवि विवरण दर्ज करें

VIDEO: https://youtu.be/Sz3XfCsSb6k


यह स्थैतिक सेल ऊंचाई है कि स्टोरीबोर्ड प्रोटोटाइप सेल में परिभाषित कर रहे हैं
किरीट वाघेला

उन दो लाइनों को जोड़ा और यह सुनिश्चित किया कि मेरा UILabel 0 लाइनों में सेट हो गया था। विज्ञापन के रूप में काम नहीं किया। कोड की सिर्फ दो पंक्तियों के साथ इसे बनाने के लिए आपने और क्या किया?
विल


1
नहीं, यह पर्याप्त होना चाहिए। क्या आपके पास पर्यवेक्षण के लिए पिन किए गए लेबल के लिए ऑटोलॉययट बाधाएं हैं?
यूजीन ब्रिगिनेट्स



1

@ आयुष जवाब के रूप में:

जैसा कि आप sizeWithFontApple डेवलपर साइट पर देख सकते हैं कि यह पदावनत है इसलिए हमें इसका उपयोग करने की आवश्यकता है sizeWithAttributes

खैर, यह मानते हुए कि 2019+ में आप शायद स्विफ्ट का उपयोग कर रहे हैं और Stringऑब्जेक्टिव-सी के बजाय और NSString, यहाँ सही तरीका Stringपूर्वनिर्धारित फ़ॉन्ट का आकार प्राप्त करते हैं :

let stringSize = NSString(string: label.text!).size(withAttributes: [.font : UIFont(name: "OpenSans-Regular", size: 15)!])

फ़ॉन्ट आकार निर्धारित करने के लिए आप इसका उपयोग कैसे कर सकते हैं?
जोसेफ एस्ट्राहन

@JosephAstrahan यह फ़ॉन्ट आकार निर्धारित करने के लिए नहीं है, यह निर्धारित फ़ॉन्ट के साथ एक स्ट्रिंग का आकार (CGSize) प्राप्त करने के लिए है। यदि आप किसी लेबल का फ़ॉन्ट आकार प्राप्त करना चाहते हैं, तो आप आसानी से लेबल का उपयोग कर सकते हैं। Font
Romulo BM

आपके विचार का उपयोग करते हुए, मैंने फ़ॉन्ट आकार को अधिक या कम करने के लिए एक तरीका बनाया ( stackoverflow.com/questions/61651614/… ), label.font लेबल के साथ कुछ जटिल मुद्दों के कारण मेरे मामले में काम नहीं करेगा, केवल क्लिक करने योग्य होने पर सटीक फ़ॉन्ट ज्ञात है कि आप इसके बारे में मेरी पोस्ट पर पढ़ सकते हैं।
जोसेफ एस्ट्राहन


0

अगर किसी को इसकी आवश्यकता है तो यहां एक समान है:

/// <summary>
/// Measures the height of the string for the given width.
/// </summary>
/// <param name="text">The text.</param>
/// <param name="font">The font.</param>
/// <param name="width">The width.</param>
/// <param name="padding">The padding.</param>
/// <returns></returns>
public static float MeasureStringHeightForWidth(this string text, UIFont font, float width, float padding = 20)
{
    NSAttributedString attributedString = new NSAttributedString(text, new UIStringAttributes() { Font = font });
    RectangleF rect = attributedString.GetBoundingRect(new SizeF(width, float.MaxValue), NSStringDrawingOptions.UsesLineFragmentOrigin, null);
    return rect.Height + padding;
}

जिसका उपयोग इस तरह किया जा सकता है:

public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
    //Elements is a string array
    return Elements[indexPath.Row].MeasureStringHeightForWidth(UIFont.SystemFontOfSize(UIFont.LabelFontSize), tableView.Frame.Size.Width - 15 - 30 - 15);
}

0
CGSize maximumLabelSize = CGSizeMake(label.frame.size.width, FLT_MAX);
CGSize expectedLabelSize = [label sizeThatFits:maximumLabelSize];
float heightUse = expectedLabelSize.height;


-1

इसमें से किसी ने भी मेरे लिए ios 7 में काम नहीं किया। यहां मैंने वही किया जो मैंने किया। मैंने इसे अपने कस्टम सेल वर्ग में रखा और अपनी ऊँचाई में विधि को कॉल किया ।ForCellAtIndexPath विधि।

ऐप स्टोर में ऐप देखने पर मेरा सेल विवरण सेल के समान दिखता है।

स्टोरीबोर्ड में सबसे पहले, अपने लेबल को 'एट्रिब्यूट टेक्स्ट' पर सेट करें, लाइनों की संख्या 0 पर सेट करें (जो स्वचालित रूप से लेबल का आकार बदल देगा (ios 6+ केवल)) और इसे वर्ड रैप पर सेट करें।

फिर मैं सिर्फ अपने कस्टम सेल क्लास में सेल की सामग्री की सभी ऊंचाइयों को जोड़ता हूं। मेरे मामले में मेरे पास शीर्ष पर एक लेबल है जो हमेशा "विवरण" (_descriptionHeadingLabel) कहता है, एक छोटा लेबल जो आकार में परिवर्तनशील होता है जिसमें वास्तविक विवरण (_descriptionLabel) होता है जो कक्ष के शीर्ष से शीर्ष तक एक बाधा होता है (_descriptionHeadingLabelTopConstraint) । मैंने नीचे से थोड़ा सा स्पेस करने के लिए 3 भी जोड़ दिया (उपशीर्षक प्रकार के सेल पर समान मात्रा में सेब के स्थानों के बारे में)।

- (CGFloat)calculateHeight
{
    CGFloat width = _descriptionLabel.frame.size.width;
    NSAttributedString *attributedText = _descriptionLabel.attributedText;
    CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX} options: NSStringDrawingUsesLineFragmentOrigin context:nil];

    return rect.size.height + _descriptionHeadingLabel.frame.size.height + _descriptionHeadingLabelTopConstraint.constant + 3;
}

और मेरे तालिका देखें प्रतिनिधि में:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    if (indexPath.row == 0) {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"descriptionCell"];
        DescriptionCell *descriptionCell = (DescriptionCell *)cell;
        NSString *text = [_event objectForKey:@"description"];
        descriptionCell.descriptionLabel.text = text;

        return [descriptionCell calculateHeight];
    }

    return 44.0f;
}

यदि आप स्टेटमेंट को थोड़ा 'स्मार्ट' बना सकते हैं और वास्तव में सेल पहचानकर्ता को किसी प्रकार के डेटा स्रोत से प्राप्त कर सकते हैं। मेरे मामले में कोशिकाओं को कठोर कोडित किया जा रहा है क्योंकि एक विशिष्ट क्रम में उनमें से निश्चित राशि होगी।


boundingRectWithSizeios 9.2 वर्तमान समस्याओं में, ios <9.2 के विभिन्न परिणाम हैं। आपने इसे बनाने के लिए कोई अन्य सर्वोत्तम तरीका पाया या जाना।
jose920405
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.