2013-02-22 70 views
16

हाय मेरे पास आईपैड स्क्रीन पर एमबी प्रोग्रेसएचयूडी है। पूरी तरह से ठीक काम करता है। लेकिन मैं लेबल बदलने के लिए तीन lines.Like इसMBProgressHUD एक से अधिक पंक्तियों में लेबल टेक्स्ट दिखाने के लिए

self.hud = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
self.hud.frame = CGRectMake(0, 0, 120, 143); 

[self.navigationController.view addSubview:self.hud]; 
self.hud.delegate = self; 
self.hud.mode = MBProgressHUDModeAnnularDeterminate; 
NSString *strloadingText = [NSString stringWithFormat:@"Loading Data.\r Please Wait.\r 1-2 Minutes"]; 
NSLog(@"the loading text will be %@",strloadingText); 
self.hud.labelText = strloadingText; 
[self.hud show:YES]; 

में दिखाना चाहते हैं तो मैं 3 लाइनों

लोड हो रहा है डाटा में लेबल चाहते हैं।

कृपया प्रतीक्षा करें

1-2 मिनट

या मैं HUD के लिए एक छवि प्रदान कर सकते हैं?

यह सब लेबलटेक्स्ट में होना चाहिए। लेकिन मैं केवल एक पंक्ति के साथ खत्म हो रहा हूँ। मैं उसे कैसे कर सकता हूँ? यदि आपको अधिक जानकारी चाहिए, तो कृपया पूछें। धन्यवाद।

+0

'[NSString stringWithFormat: @" लोड हो रहा डेटा के साथ प्रयास करें। \ N कृपया प्रतीक्षा करें। \ N 1-2 मिनट "]'। सुनिश्चित नहीं है कि यह MBProgressHUD में संभाला गया है या नहीं। – iDev

+0

@ एसीबी.मैंने कोशिश की। अभी भी एक ही पंक्ति में। – RookieAppler

+0

फिर आपको MBProgressHUD कार्यान्वयन को संशोधित करना पड़ सकता है। जांचें कि इसके लिए कोई विकल्प उपलब्ध है या नहीं। – iDev

उत्तर

34

एमबी प्रोग्रेसएचयूडी के विवरण लेबलबैक संपत्ति बहुमुखी है लेकिन लेबल टेक्स्ट गुण नहीं है।

तो, आप आप संपत्ति detailsLabelFont का उपयोग करके detailsLabelText फ़ॉन्ट सेट कर सकते हैं इस

MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.frame = CGRectMake(0, 0, 120, 143); 

hud.mode = MBProgressHUDModeAnnularDeterminate; 
NSString *strloadingText = [NSString stringWithFormat:@"Loading Data."]; 
NSString *strloadingText2 = [NSString stringWithFormat:@" Please Wait.\r 1-2 Minutes"]; 

NSLog(@"the loading text will be %@",strloadingText); 
hud.labelText = strloadingText; 
hud.detailsLabelText=strloadingText2; 

की तरह कुछ कोशिश कर सकते हैं।

+1

यह दिलचस्प है। जिज्ञासा से मैंने यह पता लगाने की कोशिश कर स्रोत के माध्यम से देखा कि विवरण LabelText multiline क्यों था लेकिन लेबल टेक्स्ट नहीं था और कोई अंतर नहीं देख सका। क्या आप जानते हैं कि पैरामीटर एक मल्टीलाइन बनाता है और दूसरा नहीं? – hkatz

+2

पैरामीटर संख्याऑफलाइन है। इसे इस तरह सेट करें: label.numberOfLines = 0; –

3

लेबलटेक्स्ट विवरण से अलग क्यों है कारण, मैं कल्पना करता हूं क्योंकि यह शीर्षक/विवरण परिप्रेक्ष्य से UIAlertView के समान ही है।

दो लेबल के बीच मतभेद, क्योंकि उनके उद्देश्य की काफी अलग है, उदाहरण के लिए:

  • टाइटल बड़ा फोंट, बार बार बार विस्तार पाठ की तुलना में बोल्ड है।

शीर्षक::

  • टाइटल छोटी और स्पष्ट है, (वर्णन खुद कहता है) एक लोकप्रिय शब्दकोश साइट से लिया जा करने के लिए होती हैं एक वर्णनात्मक नाम; एक उपहास

  • मैं अनुशंसा करता हूं कि बहु-पंक्ति शीर्षक न रखें, इसे छोटा रखें, और वर्णन टेक्स्ट का उपयोग करें।

    मल्टी-लाइन शीर्षक काम नहीं करते हैं कारण लेआउटस्यूव्यूव कार्यान्वयन के कारण है, आकार की गणना नहीं की जा रही है। आप MBProgressHud.m, layoutSubviews भीतर,

    CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin; 
    CGSize maxSize = CGSizeMake(maxWidth, remainingHeight); 
    CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font 
              constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode]; 
    totalSize.width = MAX(totalSize.width, detailsLabelSize.width); 
    totalSize.height += detailsLabelSize.height; 
    if (detailsLabelSize.height > 0.f && (indicatorF.size.height > 0.f || labelSize.height > 0.f)) { 
        totalSize.height += kPadding; 
    } 
    

    नोट विवरण पाठ के लिए -[NSString sizeWithFont: constrainedToSize: lineBreakMode:] कॉल का निरीक्षण करता है; यह विधि पाठ को प्रदर्शित करने के लिए आवश्यक आकार की गणना करती है - आवश्यकतानुसार कई पंक्तियों का उपयोग करके, जबकि -[NSString sizeWithFont:] टेक्स्ट प्रदर्शित करने के लिए आवश्यक आकार की गणना करता है, लेकिन केवल एक पंक्ति प्रदर्शित करने के लिए।

    मैं एक बहु-पंक्ति शीर्षक रखने के खिलाफ सलाह दूंगा, और इसके बजाय कुछ विवरण टेक्स्ट के साथ एक छोटा शीर्षक प्रदान करूंगा।

    यदि आपके पास बस बहु-पंक्ति शीर्षक होना चाहिए (MBProgressHud के भीतर सभी परिवर्तन।एम):

    - (void)setupLabels { 
    label = [[UILabel alloc] initWithFrame:self.bounds]; 
    label.adjustsFontSizeToFitWidth = NO; 
    label.textAlignment = MBLabelAlignmentCenter; 
    label.opaque = NO; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textColor = [UIColor whiteColor]; 
    label.font = self.labelFont; 
    label.text = self.labelText; 
    >>> label.numberOfLines = 0; 
    [self addSubview:label]; 
        ... 
    

    बदलें:

    CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin; 
    CGSize maxSize = CGSizeMake(maxWidth, remainingHeight); 
    
    CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode]; 
    totalSize.width = MAX(totalSize.width, labelSize.width); 
    totalSize.height += labelSize.height; 
    
    if (labelSize.height > 0.f && indicatorF.size.height > 0.f) { 
        totalSize.height += kPadding; 
    } 
    
    remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin; 
    CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font 
              constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode]; 
    

    आशा इस मदद करने के लिए देर नहीं हुई है:

    CGSize labelSize = [label.text sizeWithFont:label.font]; 
    labelSize.width = MIN(labelSize.width, maxWidth); 
    totalSize.width = MAX(totalSize.width, labelSize.width); 
    totalSize.height += labelSize.height; 
    if (labelSize.height > 0.f && indicatorF.size.height > 0.f) { 
        totalSize.height += kPadding; 
    } 
    
    CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin; 
    CGSize maxSize = CGSizeMake(maxWidth, remainingHeight); 
    CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font 
              constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode]; 
    
    साथ

    1

    मेरे पास ऐसा कोई सवाल भी था!

    आप hud.label.numberOfLines = 0;

    सेट कर सकते हैं और यह काम करता है!

    0

    self.hud.minSize = CGSizeMake (300, 100);