2

2つのUILabels(state、zipCode)を並べて配置する必要があります。つまりCalifornia 32320をUITableViewのセルに配置する必要があります。フォントサイズを小さくすると、はっきりと表示されます。フォントサイズを大きくすると、状態ラベルとzipCodeの最後の文字が表示されません。ラベルが追加されています。これは私が取り組んでいるコードです:

-(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;
}

これで、結果がCaliforni32320として表示されます。

しかし、フォントサイズを10に減らすと、はっきりと見えます(California 32320)。ただし、要件に応じて、フォントサイズを12にする必要があります。

どこが間違っているのですか?

4

5 に答える 5

3

このコードを使用すると、ラベルのサイズに合わせてラベルが表示されます

label.adjustsFontSizeToFitWidth = YES;
于 2013-01-02T07:27:10.573 に答える
2

ラベルの幅を少し大きく更新してください。また、Lableの「setNoOfLine」プロパティを2に使用します。これにより、テキストが2行で表示されます。

お役に立てば幸いです。

乾杯!

于 2013-01-02T07:17:03.447 に答える
1

テキストに応じてラベルのサイズが自動的に変更されるちょっとしたトリックがあります

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 :)
于 2013-01-02T07:26:38.613 に答える
0

あなたのstateラベルのフォントは ですHelvetica-Boldが、あなたのsizeWithFontでは指定したフォントは ですHelvetica。または、単に指定することもできますstate.font

于 2013-01-02T07:25:44.640 に答える
0

こうやって、

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

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

それがあなたを助けることを願っています....

于 2013-01-02T07:25:45.867 に答える