我的開發筆記---UILabel根據字符串來自適應大小


  

下面是更新的UIlabel使用小技巧:根據字符串的大小來定義label的大小。

通常我們都是先指定label的大小在將字符串寫入label,這樣往往會浪費一些空間,或空間不夠不能將字符串完全顯示,或字符串自適應縮小,或換行。當多個label在一起顯示時就會出現一些想不到的麻煩。

 如上圖:label的位置都是預先指定好的,無發根據數據進行自適應位置大小,使得label間存在間隙(客戶不要)

代碼:

  NSString *label7String = [labelDic objectForKey:@"v7"]; //獲取數據

            if(label7String){

                UILabel *label7 = [[UILabel allocinitWithFrame:CGRectMake(17636020)];//指定label位置大小

                label7.backgroundColor = [UIColorclearColor];

                label7.lineBreakMode = UILineBreakModeWordWrap

                label7.numberOfLines = 1;

                label7.font = [UIFont fontWithName:@"Helvetica-Bold" size:12];

                label7.text = label7String;

                label7.textColor = [UIColor grayColor];

                label7.textAlignment = UITextAlignmentLeft;

                [button addSubview:label7];

                [label7 release];

            }

            

            NSString *label8String = [labelDic objectForKey:@"v8"];

            if(label8String){

                UILabel *label8 = [[UILabel allocinitWithFrame:CGRectMake(77604025)];

                label8.backgroundColor = [UIColorclearColor];

                label8.lineBreakMode = UILineBreakModeWordWrap

                label8.numberOfLines = 1;

                label8.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];

                label8.text = label8String;

                label8.textColor = [UIColor blueColor];

                label8.textAlignment = UITextAlignmentLeft;

                [button addSubview:label8];

                [label8 release];

            }

 

下面的一個接口可以返回指定大小的字符串在顯示時的實際大小。

CGSize titleSize = [label8String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];

 

如上圖,label間無間隙。

代碼:

CGSize size7 = CGSizeMake(00); //初始化size7

            NSString *label7String = [labelDic objectForKey:@"v7"];  //獲取數據

            if(label7String){

             UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:12]; //指定字符串的大小

             CGSize titleSize = [label7String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; //獲取字符串的實際大小

                size7 = titleSize;//保存字符串的大小(也就是label的大小)用來指定相鄰的label8的位置

                UILabel *label7 = [[UILabel alloc] init];   

                label7.frame = CGRectMake(1763, titleSize.width, titleSize.height);//初始化label7

                

                label7.backgroundColor = [UIColorclearColor];

                label7.lineBreakMode = UILineBreakModeWordWrap

                label7.numberOfLines = 1;

                label7.font = [UIFont fontWithName:@"Helvetica-Bold" size:12];

                label7.text = label7String;

                label7.textColor = [UIColor grayColor];

                label7.textAlignment = UITextAlignmentLeft;

                [button addSubview:label7];

                [label7 release];

            }   

 

      CGSize size8 = CGSizeMake(00); //初始化size8

                NSString *label8String = [labelDic objectForKey:@"v8"];//獲取數據

                if(label8String){

                    UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 

              CGSize titleSize = [label8String sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; //獲取字符串的實際大小

                     size8 = titleSize;//保存字符串(label)大小,用來指定相鄰的label位置

                    UILabel *label8 = [[UILabel allocinit];

                    label8.frame = CGRectMake(17 + size7.width60, titleSize.width, titleSize.height);//這里根據相鄰label7的位置大小來指定label8的位置,根據字符串的大小來指定label8的大小

                    label8.backgroundColor = [UIColor clearColor];

                    label8.lineBreakMode = UILineBreakModeWordWrap

                    label8.numberOfLines = 1;

                    label8.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];

                    label8.text = label8String;

                    label8.textColor = [UIColor blueColor];

                    label8.textAlignment = UITextAlignmentLeft;

                    [button addSubview:label8];

                    [label8 release];

                }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM