3

UITableView のカスタム セル クラスに UILabel があり、次のコードを使用して、その内容に関してラベルの幅を動的に増やします。

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font];

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height);

上記のコードを使用して表示される問題は、ラベルを右揃えにすることができなくなったことです (ラベルの幅を右ではなく左に広げます)。

上記のコードを使用せず、IB で配置を右に設定すると、配置は機能します。ただし、この場合、動的な幅が失われます。

私は試してみました:

cell.cellResult.textAlignment = UITextAlignmentRigth;
cell.cellResult.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

しかし、何も起こりません。

誰かがこれについて私を助けてくれますか?

4

3 に答える 3

5

フレームの実際の幅を設定しているため、ラベルを右揃えにすることはできません。

動的でありながら正しい位置に配置したい場合は、次のようにすることができます。

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font];

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x + cell.cellResult.frame.size.width - sizeToMakeLabel.width, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height);
于 2012-10-15T13:31:18.680 に答える
3

これは、フレームを設定するときにラベルの原点を変更するためです。cell.cellResult.frame.origin.x,

幅のみを管理するように境界を変更できます。

于 2012-10-15T13:30:03.070 に答える