1

以前、単語全体を2行目に入れる方法(ワードラップ)について質問しました。今、私は次のことに興味があります。たとえば、「Lorem ipsummmmmm long title」という文字列があり、ラベルに「setLineBreakMode」を設定しましたが、1つを除いてすべて問題ありません。いくつかの単語は長いので、私の文字列「ipsummmmmm」の単語を1行目に含めることはできず、2行目にあると仮定します。ラベル全体で27文字を超える文字列をカットするように設定したため、問題が発生しました。問題は、1行目が「Lorem」のみで、他の3単語が2行目になることです。

サブストリングの私のコード:

mainArticleTitleLabel.text = [finalMainArticleTitle stringByAppendingString:@ "..."];

どこかで@"..."を取得し、どこかでカットワードしかないので、それを計算して解決する方法はありますか?

4

1 に答える 1

2

私はそれを行う方法についての考えを持っていますが、それはおそらくそれを解決するための最も速い方法ではありません。

私が提案するのは、元の文字列を単語の配列に分割することです。次に、文字列を単語ごとに再構築し始めます。単語を追加した後、[sizeWithFont:constrainedToSize:]メソッドを使用して、ラベルの幅と大きな数値、つまり高さを10,000にすることができます。高さが1行から2行にジャンプすると、最初の行に何があったかがわかります。単語がなくなるか、3行目に到達するまで単語を追加し続けます。その後、2行目の文字数を計算できます。

これで問題が解決するか、少なくとも正しい方向に進むことを願っています。

于 2012-10-22T15:11:14.637 に答える