0

3つのUILabelを含むカスタムUITableViewCellがあります。これらのラベルの2つはセルの左側に配置され、もう1つは右側に配置されます。これがどのように見えるかです:

ここに画像の説明を入力してください

私が抱えている問題は、UITableViewが編集モードのときです。AutoResizingMasksを使用して、右側のラベルが画面の横から消えないようにしようとしていますが、うまくいきません。これが何が起こるかです:

ここに画像の説明を入力してください

私が遊んでいるコードは、サブクラスUITableViewCellからのものです。これが私のコードです:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) 
    {
        // Setup the cells accessory
        self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        // Setup the cell background
        self.backgroundView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"Plain_Cell.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0]];

        // Setup the Main label (fruit names)
        mainLabel = [[UILabel alloc] init];
        mainLabel.font = [UIFont systemFontOfSize:25];
        mainLabel.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:mainLabel];

        // Setup the dates label
        datesLabel = [[UILabel alloc] init];
        datesLabel.font = [UIFont systemFontOfSize:14];
        datesLabel.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:datesLabel];

        // Setup the milage label
        distanceLabel = [[UILabel alloc] init];
        distanceLabel.textAlignment = UITextAlignmentRight;
        distanceLabel.font = [UIFont systemFontOfSize:14];
        distanceLabel.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:distanceLabel];
    }

    return self;
}


- (void)layoutSubviews
{
    [super layoutSubviews];

    mainLabel.frame = CGRectMake(10, 10, 280, 39);
    datesLabel.frame = CGRectMake(10, 58, 184, 21);
    distanceLabel.frame = CGRectMake(205, 58, 85, 21);

    mainLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
    datesLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
    distanceLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin;
}

注:その他のコードについては、下にスクロールしてください。

しかし、私はそれであまり運がありませんでした。誰かが私を助けてくれませんか?

4

1 に答える 1

2

テキストを右揃えにしますが、ラベルは揃えません。これを試して:

...
// Setup the mileage label
distanceLabel = [[UILabel alloc] init];
distanceLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
distanceLabel.textAlignment = UITextAlignmentRight;
distanceLabel.font = [UIFont systemFontOfSize:14];
distanceLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:distanceLabel];

これにより、右マージンが所定の位置にロックされ、ビューが縮小したときに左マージンが縮小できるようになります。

于 2012-05-31T21:29:55.597 に答える