0

アプリの UILabel が異常な動作をしており、解決方法について何かアイデアや提案があるかどうか疑問に思っています。

1.まず、tableView のセル内に表示されるラベルのフレームを設定します。

CGRect CellFrame = CGRectMake(0, 0, 300, 75);
CGRect Label1Frame = CGRectMake(10, 5, 290, 20);
CGRect Label2Frame = CGRectMake(0, 20, 290, 50);
UILabel *lblTemp;

UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:CellFrame        reuseIdentifier:cellIdentifier]; 
  1. 次に、ラベルのプロパティを設定します

1.

lblTemp = [[UILabel alloc] initWithFrame:Label1Frame];
lblTemp.tag = 1;
lblTemp.font = [UIFont fontWithName:@"Helvetica" size:12.0];
lblTemp.textColor = [UIColor blackColor];
lblTemp.lineBreakMode = UILineBreakModeWordWrap;
lblTemp.numberOfLines = 0;
[cell.contentView addSubview:lblTemp];

//Initialize Label with tag 2.
lblTemp = [[UILabel alloc] initWithFrame:Label2Frame];
lblTemp.tag = 2;
lblTemp.font = [UIFont fontWithName:@"Helvetica" size:10];
lblTemp.textColor = [UIColor lightGrayColor];
lblTemp.lineBreakMode = UILineBreakModeWordWrap;
lblTemp.numberOfLines = 0;
[cell.contentView addSubview:lblTemp];

return cell;

3.次に、セルの内容をセットアップします

//set up the cell

UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2];

CaseFeed *aCaseFeed = [[CaseFeed alloc] init];
aCaseFeed = [CaseFeedbook objectAtIndex:indexPath.row];

lblTemp1.text = [NSString stringWithFormat:@"%@", aCaseFeed.title];
lblTemp2.text = [NSString stringWithFormat:@"%@", aCaseFeed.description];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;

問題: lblTemp2 (セルの 2 番目のラベル) の内容が 2 行以上にまたがります。実行時に lblTemp2 のテキストが入力されると、最初の 2 行は完全に表示されますが、3 行目はフレームの左側の外側から始まります。

これを解決する方法についてのアイデアはありますか? なぜこうなった?

4

1 に答える 1

0

次のコードを使用して、tableView のセルをセットアップします。

- (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];
    }
    else 
    {
        for (id v in cell.contentView.subviews) 
        {
            UIView *realV = (UIView *) v;
            [realV removeFromSuperview];
        }
    }
    CGRect CellFrame = CGRectMake(0, 0, 300, 75);
    CGRect Label1Frame = CGRectMake(10, 5, 290, 20);
    CGRect Label2Frame = CGRectMake(0, 20, 290, 50);


    UILabel *label1 = [[UILabel alloc] init];
    label1.frame = Label1Frame;
    label1.tag = 1;
    label1.font = [UIFont fontWithName:@"Helvetica" size:12.0];
    label1.textColor = [UIColor blackColor];
    label1.lineBreakMode = UILineBreakModeWordWrap;
    label1.numberOfLines = 0;
    [cell.contentView addSubview:label1];

    UILabel *label2 = [[UILabel alloc] init];
    label2.frame = Label2Frame;
    label2.tag = 2;
    label2.font = [UIFont fontWithName:@"Helvetica" size:10.0];
    label2.textColor = [UIColor lightGrayColor];
    label2.lineBreakMode = UILineBreakModeWordWrap;
    label2.numberOfLines = 0;
    [cell.contentView addSubview:label2];

    CaseFeed *aCaseFeed = [[CaseFeed alloc] init];
    aCaseFeed = [CaseFeedbook objectAtIndex:indexPath.row];

    label0.text = [NSString stringWithFormat:@"%@", aCaseFeed.title];
    label1.text = [NSString stringWithFormat:@"%@", aCaseFeed.description];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}

お役に立てれば

于 2012-09-07T19:21:31.633 に答える