0

UITableViewCell のデフォルトの textLabel の下にセカンダリ (カスタム) ラベルを追加しようとしています。

フレームを正しく設定したいのですが、これは実際には textLabel の下にあるはずです。しかし、すべての値が 0 を返すため、カスタム ビューのフレームを正しく準備できません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

NSLog(@"%f, %f, %f, %f", cell.textLabel.frame.origin.x,cell.textLabel.frame.origin.y,cell.textLabel.frame.size.height,cell.textLabel.frame.size.width);

版画

0.000000, 0.000000, 0.000000, 0.000000

カスタム セカンダリ説明ビューの正しい x と y を取得するにはどうすればよいですか? (UITableViewCell にこれに似たテンプレートがあることは知っていますが、詳細ビュー テンプレートは使用したくありません)

4

2 に答える 2

1

ロード直後にセルのサイズを取得できない可能性が非常に高いです。最初cellForRowAtIndexPath:はゼロ値が返されます。[tableView reload]ビューの外にスクロールするか、何らかの方法でメソッドを呼び出す必要があります。cellForRowAtIndexPath:これにより、新しい値で再度呼び出されます。フレームの起源は異なりますが、サイズは同じでなければなりません。この手法を使用して、detailTextLabel.frame のサイズを取得しました。これが私の例で、サイズを取得する方法は次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ......
    NSLog(@“detailCell frame is %@”, NSStringFromCGRect(cell.detailTextLabel.frame));
    ......
}

幸運を

于 2014-01-16T19:02:03.250 に答える