1

私の場合、UILabel frame.origin.x を計算して、以下のコードで右側に作成します。

writerNameLabel.frame = CGRectMake(cell.frame.size.width - writerNameLabel.frame.size.width - 80.......)

NSLog(@" writerNameLabel frame width: %f",writerNameLabel.frame.size.width);
NSLog(@" cell frame width: %f",cell.frame.size.width);
NSLog(@" cell - writerNameLabel frame width: %f",cell.frame.size.width - writerNameLabel.frame.size.width);
NSLog(@" writerNameLabel frame x: %f",writerNameLabel.frame.origin.x);


2012-08-17 14:43:36.895 writerNameLabel frame width: 38.000000
2012-08-17 14:43:36.899 cell frame width: 320.000000
2012-08-17 14:43:36.902 cell - writerNameLabel frame width: 282.000000
2012-08-17 14:43:36.904 writerNameLabel frame x: 240.000000

----

2012-08-17 14:43:36.924 writerNameLabel frame width: 102.000000
2012-08-17 14:43:36.928 cell frame width: 320.000000
2012-08-17 14:43:36.931 cell - writerNameLabel frame width: 218.000000
2012-08-17 14:43:36.934 writerNameLabel frame x: 240.000000

問題は、これが

cell.frame.size.width - writerNameLabel.frame.size.width

計算の一部が機能せず、次の値のみが返されます

セル.フレーム.サイズ.幅 - 80

、 どうして?私は何か悪いことをしましたか?

お知らせ下さい。ありがとう。

4

4 に答える 4

3

問題は、ラベルのフレームを最初に設定していないため、デフォルトでは{ 0, 0, 0, 0}であると思われます。そのため、計算に効果がありません。

于 2012-08-17T07:00:09.037 に答える
1

その時の writerNameLabel.frame.size.width の値は 0 なので。

于 2012-08-17T07:00:12.593 に答える
1

フレームのデフォルト値はデフォルトで {0, 0, 0, 0} です

于 2013-03-28T09:18:15.110 に答える
0

writerNameLabel をどのように初期化しますか? initWithFrame を使用する必要があります。そうしないと、サイズが (0,0) になります。

ただの情報:

変数の名前がセルであるため、UITableViewCellを使用していると思います:)その場合、cell.frame.size.widthの代わりにcell.contentView.frame.size.widthを使用するとよいでしょう。したがって、writerNameLabel がセルのアクセサリ ビューと重複するのを防ぐことができます。最も簡単な方法は、既に (デフォルトで) UITableViewCell インスタンスにあるラベルを使用することです。

于 2012-08-17T07:27:26.400 に答える