0

iPhoneとiPodTouch用のRSSパーサーを作成していますが、記事ごとに各セルに表示される行数を設定できる必要があります。私が使用しているフォントサイズで1行に最も収まる39文字ごとに分割したいと思います。

文字列の文字数を1行あたりの文字数で割ってみたいと思います。答えとして整数を使用したいのですが、必要に応じて切り上げます。

これは私がこれまでに持っているものです。なにが問題ですか?

NSNumber *lines = [[NSNumber alloc] initWithInteger:[cell.textLabel.text length]/kLineLength];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

    [formatter setRoundingMode:NSNumberFormatterRoundUp];
    [formatter setRoundingIncrement:[[[NSNumber alloc]initWithInteger:1]autorelease]];

    NSNumber *roundedLines = [[NSNumber alloc]initWithInteger: [[formatter numberFromString:[lines stringValue]]integerValue]];

    [cell.textLabel setNumberOfLines:[roundedLines integerValue]];

    [roundedLines release];
    [formatter release];
    [lines release];

編集

ラベルを付ける行数を知っているほど、改行した後ではありません。ですから、私は効果的に改行を設定していますが、実際にはそうしていません。私はiOSにどこを壊すかを考えさせ、使用する行数を指示するだけです。

4

3 に答える 3

1

自分でやらないでください。UILabelまたはをあなたのためにUITextViewそれUIWebViewをさせてください。各文字の幅は異なります。Nすべての文字 に改行を挿入しても意味がありません。

つまり、植字はグーテンベルクの時代から何百年もの間栽培されてきた洗練された芸術です。私はあえてそれを自分でやるつもりはありません。それは専門家(つまりAPI実装者)に任せてください。

于 2010-09-14T19:09:10.607 に答える
0

ここで何を達成しようとしているのか正確にはわかりませんが、cell.textLabel を使用できず、カスタム UITableViewCell を使用する必要がある場合があります。

また、cell.textLabel.numberOfLines = 2; を設定すると、必要に応じて UILabel オブジェクトが自動的に改行を生成します。

于 2010-09-14T18:58:02.210 に答える
0

あなたが与えたこの複雑な解決策が冗談だったのかどうかはわかりません:-)

int numberOfCharacters = ....;
int kLineLength = 39;

int lines = (numberOfCharacters + kLineLength - 1) / kLineLength;

フォーマッターなどは必要ありません。

編集: ワード ラッピングを行うと、とにかく行が短くなるため、固定された行幅にはおそらくがっかりするでしょう。

于 2010-09-14T18:59:13.533 に答える