1

UILabelは入ってUITableViewCellおり、これが私のコードです

lblgoal = [[UILabel alloc] initWithFrame:CGRectMake(60,10, 250, 20)];
CGSize maximumLabelSize1 = CGSizeMake(230,9999);
            lblgoal.numberOfLines = 0;
            lblgoal.adjustsFontSizeToFitWidth = NO;
            CGSize expectedLabelSize = [sg.subgoal_name sizeWithFont:lblgoal.font
                                                   constrainedToSize:maximumLabelSize
                                                   lineBreakMode:lblsubgoal1.lineBreakMode];
CGRect newFrame = lblgoal.frame;
            newFrame.size.height = expectedLabelSize.height;
            lblgoal.frame = newFrame;

しかし、これは幅UILabelを 200 に設定した場合にのみ機能し、200 を超える幅を設定すると、すべてが最後に点線で 1 行になります。また、UITableViewセル幅は 500 以上です。

4

3 に答える 3

1

実際には、次のように sizeWithFont 関数と lblgoal ラベルの両方に必ず to を設定しlinebreakmodeUILineBreakModeWordWrapください。

lblgoal.numberOfLines = 0;
lblgoal.lineBreakMode = UILineBreakModeWordWrap; //NSLineBreakByWordWrapping for iOS 6

編集:sizeToFitを設定した後に試してくださいlineBreakMode

[lblgoal sizeToFit];

cellForRowAtIndexPathまた、メソッド内でこれを行うようにしてください。

また、セルの高さもそれに応じて調整されるように、次のデリゲート メソッドを実装する必要があります。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-06-03T07:01:17.203 に答える
0

MaximumLabelSize をチェックしているときは、幅が固定されています。

CGSize maximumLabelSize1 = CGSizeMake(230,9999);

代わりに使用

CGSize maximumLabelSize1 = CGSizeMake(MAXFLOAT, MAXFLOAT);

しかし、これにより、幅をいくらでも広げる機会が得られます。これはうまくいきません..だから、最大幅を 500 に設定します。

CGSize maximumLabelSize1 = CGSizeMake(500, MAXFLOAT);

Label の Frame を設定します。

CGRect newFrame = lblgoal.frame;
newFrame.size.height = expectedLabelSize.height;
newFrame.size.width = expectedLabelSize.width;
于 2013-06-03T06:54:35.357 に答える
0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
     if (!self.lastIndexPath) 
     {
        self.lastIndexPath = indexPath;
     }

    if ([self.lastIndexPath row] != [indexPath row])
    {
        UITableViewCell *newCell = [tableView cellForRowAtIndexPath: indexPath];
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;

        UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:self.lastIndexPath]; 
        oldCell.accessoryType = UITableViewCellAccessoryNone;

        self.lastIndexPath = indexPath;  
    }
    else {
        UITableViewCell *newCell = [tableView cellForRowAtIndexPath: indexPath];
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
于 2013-06-03T07:22:17.770 に答える