2012-05-26 29 views
7

मुझे एक विस्तार दृश्य नियंत्रक में एक UILabel मिला है, इसलिए इसकी सामग्री चयनित तालिका पंक्ति के आधार पर बदलती है। मुझे एक समस्या है, मैं अपने UILabel के लिए एक निश्चित चौड़ाई निर्धारित करता हूं और पाठ के आधार पर एक गतिशील ऊंचाई निर्धारित करता हूं। मैं यह कैसे कर सकता हूँ? (मुझे अपनी गलतियों के लिए खेद है, लेकिन मैं अंग्रेजी नहीं हूं)यूआईएलएबल निश्चित चौड़ाई और लचीला ऊंचाई

उत्तर

-2

आप यह कर सकते हैं .. कोड है।

UILabel *yourlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, sizeToFit)]; 
yourlabel.numberOfLines = 0; 

किसी भी प्रश्न के लिए कृपया टिप्पणी करें।

+0

मैं साइजटेक्ट ऊंचाई के लिए आकार के रूप में आकार टॉफ़िट का उपयोग नहीं कर सकता, एक्सकोड मुझे ऐसा करने की अनुमति नहीं देता .. यह कहता है कि यह एक 'अविकसित पहचानकर्ता' –

+0

धन्यवाद अल्बर्ट;) –

+0

बस यह जांचें .. लिंक मुझे लगता है कि यह आपकी समस्या का समाधान करेगा। http://basheerad.blogspot.com/2011/12/dynamic-width-and-height-for-uilabel-in.html – jamil

8

मुझे यह करने के लिए UILabel उपclass करना पसंद है।

AutosizingLabel.h

#import <UIKit/UIKit.h> 


@interface AutosizingLabel : UILabel { 
    double minHeight; 
} 

@property (nonatomic) double minHeight; 

- (void)calculateSize; 

@end  

AutosizingLabel.m

#define MIN_HEIGHT 10.0f 

#import "AutosizingLabel.h" 

@implementation AutosizingLabel 

@synthesize minHeight; 

- (id)init { 
    if ([super init]) { 
     self.minHeight = MIN_HEIGHT; 
    } 

    return self; 
} 

- (void)calculateSize { 
    CGSize constraint = CGSizeMake(self.frame.size.width, 20000.0f); 
    CGSize size = [self.text sizeWithFont:self.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  

    [self setLineBreakMode:UILineBreakModeWordWrap]; 
    [self setAdjustsFontSizeToFitWidth:NO]; 
    [self setNumberOfLines:0]; 
    [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, MAX(size.height, MIN_HEIGHT))]; 

} 

- (void)setText:(NSString *)text { 
    [super setText:text]; 

    [self calculateSize]; 
} 

- (void)setFont:(UIFont *)font { 
    [super setFont:font]; 

    [self calculateSize]; 
} 

@end 

इस का उपयोग करने के लिए, आयात/अपनी परियोजना में ज और .m फ़ाइलों को बनाने के।

#import "AutosizingLabel.h" 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    AutosizingLabel *label = [[AutosizingLabel alloc] init]; 
    label.text = @"Some text here"; 
    [self.view addSubview:label]; 
} 

आप एक XIB का उपयोग कर रहे हैं, तो आप किसी भी UILabel का चयन करें और सही साइडबार में पहचान इंस्पेक्टर पर क्लिक करें यह स्थापित करने के लिए कर सकते हैं: तो अगर आप कोड में अपने UILabel बना रहे हैं, यह कुछ इस तरह दिखेगा कक्षा AutosizingLabel। किसी भी मामले में, .text संपत्ति सेट करने से लेबल के आकार को स्वतः अपडेट किया जाएगा।

+0

धन्यवाद। और फिर मैं अपने UILabel के लिए गतिशील ऊंचाई रखने के लिए विस्तार दृश्य नियंत्रक में इस सबक्लास का उपयोग कैसे कर सकता हूं? –

+0

मैंने इसका उत्तर कैसे उपयोग किया है इसके बारे में अधिक जानकारी के साथ अपना उत्तर अपडेट किया। –

+0

बहुत बहुत धन्यवाद, मैं अभी इसे आजमाने की कोशिश कर रहा हूं। –

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