Sindhia
Sindhia

Reputation: 411

UILabels complete text not visible

I have to place two UILabels(state,zipCode) side by side i.e California 32320 in UITableView's cell.I can see them clearly when the fontsize is less.When I increase the font-size I couldnot see the last letter of state label and zipCode label is getting added.This is the code I m working on:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

        static NSString *CellIdentifier=@"Cell";

        UITableViewCell* cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if(cell == nil)
        {
            cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault    reuseIdentifier:CellIdentifier]autorelease];

            state=[[UILabel alloc] initWithFrame:CGRectZero];
            state.tag = 116;
            state.backgroundColor = [UIColor clearColor];
            [state setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
            [state setLineBreakMode:UILineBreakModeWordWrap];
            [cell addSubview:state];


            zipCode=[[UILabel alloc] initWithFrame:CGRectZero];
            zipCode.tag = 121;
            zipCode.backgroundColor = [UIColor clearColor];
            [zipCode setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
            [zipCode setLineBreakMode:UILineBreakModeWordWrap];
            [cell addSubview:zipCode];

}

        NSString *state1=[d objectForKey:@"State"];
        CGSize constraint6=CGSizeMake(175,2000.0f);
        CGSize size6=[state1 sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]  constrainedToSize:constraint6 lineBreakMode:UILineBreakModeWordWrap];
        state=(UILabel *)[cell viewWithTag:116];
       state.frame=CGRectMake(105, city.frame.size.height+city.frame.origin.y+5, size6.width, 10);
       [state setTextAlignment:UITextAlignmentLeft];

       [state setText:[d valueForKey:@"State"]];

        NSString *zip = [d  objectForKey:@"Zip"];

        if([zip isEqualToString:@""])
        {

           zipCode=[[UILabel alloc]initWithFrame:CGRectMake(105, 125, 320,10)];
            zipCode .font=[UIFont fontWithName:@"Helvetica" size:12];
            [zipCode setTextAlignment:UITextAlignmentLeft];
            zipCode.hidden=YES;
            [zipCode  release];            


        }
        else
        {

            NSString *zip=[d objectForKey:@"Zip"];
            CGSize constraint200=CGSizeMake(175,2000.0f);
            CGSize size200=[zip sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]  constrainedToSize:constraint200 lineBreakMode:UILineBreakModeWordWrap];
            zipCode=(UILabel *)[cell viewWithTag:121];
            zipCode.frame=CGRectMake(13+state.frame.size.width+state.frame.origin.x, city.frame.size.height+city.frame.origin.y+5, size200.width,10);

            [zipCode setTextAlignment:UITextAlignmentLeft];
            [zipCode  setText:[d valueForKey:@"Zip"]];
            zipCode.numberOfLines=0;



        }

return cell;
}

Now I can see the result as Californi 32320

But when I reduce the font-size to 10 then I can clearly see them (California 32320).But I need the font-size to be 12 only as per my requirement.

Where I m going wrong?

Upvotes: 2

Views: 778

Answers (5)

Rushabh
Rushabh

Reputation: 3203

Use this code it will saw the label in fit to size of your label

label.adjustsFontSizeToFitWidth = YES;

Upvotes: 3

superGokuN
superGokuN

Reputation: 1424

There is a little trick by which the label will auto resize according to your text

UILabel *testLabel  =   [[UILabel alloc]initWithFrame:CGRectMake(0,0,200,40)];//set your frame
testLabel.numberOfLines =   0;//Important to add this line
testLabel.font  =   [UIFont boldSystemFontOfSize:15];//Set your font
testLabel.text  =   @"Set your text here!";
[testLabel sizeToFit]; // this line will do the trick :)

Upvotes: 1

Venk
Venk

Reputation: 5955

Do like this,

CGFloat lLabelWidth = [yourText sizeWithFont: factLabel.font].width;

CGRect _tempFrame=yourLabel.frame;
_tempFrame.size.width=lLabelWidth;
yourLabel.frame=_tempFrame;

hope it will helps you....

Upvotes: 0

neilvillareal
neilvillareal

Reputation: 3975

The font of your state label is Helvetica-Bold, but in your sizeWithFont, the font you specified is Helvetica. Alternatively, you can just specify state.font.

Upvotes: 0

Nishant B
Nishant B

Reputation: 2897

Please update the Label width with some what large. And use the "setNoOfLine" property of Lable to 2. So that, it will display text in 2 lines.

Hope it will be helpful to you.

Cheers!

Upvotes: 2

Related Questions