objective-c - ios 超过一定行数的label强制在末尾加上一个...展开且可以点击成全文
天蓬老师
天蓬老师 2017-04-17 17:32:19
0
4
1267

如题

比如

这个UIlabel 本该显示成

顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是是是是撒
大多数是山东省撒打算打算打算打算的收
水电费第三方第三方说的发送到发送到范
水电费第三方士大夫士大夫。

但是 现在业务要求最多显示3行 如果小于3行有多少航显示多少行 超过三行的话显示如下

顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是...展开

其中展开是蓝色 一点击...展开才变成

顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是是是是撒
大多数是山东省撒打算打算打算打算的收
水电费第三方第三方说的发送到发送到范
水电费第三方士大夫士大夫。

我现在虽然到达了效果 但是方法比较复杂 且有时候还有问题 我想想问问大家 有没有什么好办法 好思路 最好有代码可以参考 谢谢了

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(4)
Peter_Zhu

2 階の文字数制限は非現実的です。漢字の幅は同じですが、他の文字の幅は一致しません (1 と 8、1 と 1、i と u、W と I...)。
この問題には CoreText を使用する必要があります。このような AttributeLabel はインターネット上にあります。完全に手書きするのは難しいです。プロジェクトの前にオンラインでダウンロードして自分で修正したコードを見てください。これはちょうど追加されたものです。参考までに、次の方法はラベル

をカスタマイズする方法です。 リーリー
いいねを押す +0
左手右手慢动作

この要件は確かに少し難しいです。私だったら、次の 2 つの代替方法を使用するかもしれません:

  1. 3 行に制限する代わりに、単語数を 3 行以下 (50 単語など) に制限し、文字列を切り捨て、「...」と綴り、次に「expand」と綴り、 TTTAttributedlabelクリックイベントを追加できます。単語数は、いくつかの画面幅に基づいて個別に決定することもできます。

  2. 「展開」をラベル範囲外に移動し、ラベルの行数を 3 に制限します。その後、「展開」を別のボタンとして外側に配置します...

これを実装する必要がある場合...私が考えることができる方法は、40ワードから60ワードなど、おそらく3行の範囲で文字列を最初から最後までスキャンし、最初にsubStringを取得してから計算することです。 4行になるまでboundingRectの高さを調整します。前のテキストはちょうど 3 行を埋め、さらにいくつかの単語を切り取り、「...」と綴り、次に「Expand」と綴ります。ただし、boundingRect を計算する方法は比較的遅いため、非常に非効率であることは間違いありません。あまりお勧めできません。

いいねを押す +0
巴扎黑

どうやってそれを達成しましたか?

いいねを押す +0
巴扎黑

私もこのコントロールを探しています

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート