如题
比如
这个UIlabel 本该显示成
顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是是是是撒
大多数是山东省撒打算打算打算打算的收
水电费第三方第三方说的发送到发送到范
水电费第三方士大夫士大夫。
但是 现在业务要求最多显示3行 如果小于3行有多少航显示多少行 超过三行的话显示如下
顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是...展开
其中展开是蓝色 一点击...展开才变成
顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是是是是撒
大多数是山东省撒打算打算打算打算的收
水电费第三方第三方说的发送到发送到范
水电费第三方士大夫士大夫。
我现在虽然到达了效果 但是方法比较复杂 且有时候还有问题 我想想问问大家 有没有什么好办法 好思路 最好有代码可以参考 谢谢了
2 階の文字数制限は非現実的です。漢字の幅は同じですが、他の文字の幅は一致しません (1 と 8、1 と 1、i と u、W と I...)。
をカスタマイズする方法です。 リーリーこの問題には CoreText を使用する必要があります。このような AttributeLabel はインターネット上にあります。完全に手書きするのは難しいです。プロジェクトの前にオンラインでダウンロードして自分で修正したコードを見てください。これはちょうど追加されたものです。参考までに、次の方法はラベル
この要件は確かに少し難しいです。私だったら、次の 2 つの代替方法を使用するかもしれません:
3 行に制限する代わりに、単語数を 3 行以下 (50 単語など) に制限し、文字列を切り捨て、「...」と綴り、次に「expand」と綴り、
TTTAttributedlabel
クリックイベントを追加できます。単語数は、いくつかの画面幅に基づいて個別に決定することもできます。「展開」をラベル範囲外に移動し、ラベルの行数を 3 に制限します。その後、「展開」を別のボタンとして外側に配置します...
これを実装する必要がある場合...私が考えることができる方法は、40ワードから60ワードなど、おそらく3行の範囲で文字列を最初から最後までスキャンし、最初にsubStringを取得してから計算することです。 4行になるまでboundingRectの高さを調整します。前のテキストはちょうど 3 行を埋め、さらにいくつかの単語を切り取り、「...」と綴り、次に「Expand」と綴ります。ただし、boundingRect を計算する方法は比較的遅いため、非常に非効率であることは間違いありません。あまりお勧めできません。
どうやってそれを達成しましたか?
私もこのコントロールを探しています