2

ラベル付きのテーブルが必要な場合は、ラベルの後にテキスト フィールド UI を追加します。ラベルを固定サイズ (たとえば 150) にして、残りのセル幅をテキストフィールドで占めたいと思います。

したがって、関数で cell.textLabel のフレームを設定します

cellForRowAtIndexPath

この上

[cell.textLabel setFrame:CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y, 150, cell.textLabel.frame.size.height)];

しかし、これはうまくいかないようです。

なぜ、これに対する私の解決策は何ですか?

4

2 に答える 2

1

サブビューのUITableViewCellレイアウトを担当します。UITableViewCellStyle列挙型を使用して、レイアウトを非常に高度に制御できます。

何かカスタムが必要な場合は、UITableViewCell をオーバーライドして、コンテンツ ビューにビューを追加するか、既存のビューを変更します。これを行うときは、必ずlayoutSubviewsメソッド内でレイアウトを行ってください。

- (void)layoutSubviews 
{
    [super layoutSubviews];
    self.textLabel.frame = CGRectMake(self.textLabel.frame.origin.x, 
                                      self.textLabel.frame.origin.y, 
                                      150, 
                                      self.textLabel.frame.size.height);
}

セルのフレームは、UITableView に追加されると変更されます。セルのフレームが変更されると、layoutSubviews が呼び出され、サブビューを調整する機会が与えられます。デフォルトでは、UITableViewCell は、おそらく問題の原因である独自の調整を行います。

于 2013-05-17T11:07:04.023 に答える