2017-04-05 4 views
0

初めての投稿です。私は、Adobe社のSpark Postアプリで紹介されているこの超滑らかなテキストコンテナを再現する方法を研究しています。1行あたりの最大フォントサイズと滑らかなアニメーションをサポートする複数行のフィット幅UILabel

IMAGE: https://i.stack.imgur.com/6auPa.png

VIDEO:私はすでに、より良いフィット感に至るまで、さまざまなサイズに反復することにより、コンテナの最大フォントサイズを計算する方法に他の回答ダイビングに見てきました https://www.youtube.com/watch?v=SfvkreOo3V0&feature=youtu.be

しかし、あなたは慎重に見れば、これは異なります、

  • テキストが
  • 言葉は何とかコンテナのように振る舞う単語にトークン化されているUIViewsおそらく?
  • 単語はそれを新しい位置に優雅にアニメ化します
  • 最大フォントサイズの計算はリアルタイムで行われます!
  • すべての行がそれに拡大し、最大フォントサイズ
  • 特別なモードを有効にそれは常に私がこのことについて、いくつかの専門家の意見を聞くのが大好きだ与えられたコンテナのサイズ

をpreservers。

答えて

0

は、私はあなたが言葉にテキストを破る

  • 次の手順

      ことによってそれを解決することができると思います。
    1. 各ワードのフォントサイズは長方形の幅と高さに基づいて見つけ、 文字の数を求めます。

    2. 計算の高さに基づいて各単語のラベルを作成します。

    これを行うと、矩形幅の高さが変わるたびにアニメーションのように見えます。

  • +0

    私の最初の直感を補強してくれたありがとう@JasmeetKaurは、単語ごとに1つずつ、多くの個々のUILabelsに分割されているようです。 そのような "マンショー"のような挙動、特にすべての行が最大サイズに拡大するときに反応するようなものは、些細ではないようです。 これはすべてリアルタイムの速度操作で組み合わされているため、これをすばやくソートする非常に貴重なアルゴリズムを指しているようです... 自動レイアウトなどを使用していると思いますか? –

    +0

    @TonyStark、単語ごとに動的にUILabelを作成する必要があるので、AutoLayoutは必要ではないと思います。毎回RectViewのサイズを変更する同じアルゴを開始する必要があります。 –

    +0

    @TonyStark、また、テキストを変更するためのサンプルビデオに多くのオプションがあることを見てきました。最後には各単語のラベルがあるようです。しかし、他のAlign Optionは単一のLabelで行うことができます。 –

    0

    お世話になりました。ソリューションの些細な一部上述したように

    は、セグメントに単語のテキストであり、それはあなたがこの使用することができるため、箱に入れて:

    - (CGSize)sizeForText:(NSStringの*)のテキストを withHyperLabel:(TTHyperLabel *)hyperLabel {

    CGSize maxSize=CGSizeMake(MAXFLOAT, MAXFLOAT); 
    
    NSDictionary *[email protected]{ 
              NSFontAttributeName: [UIFont fontWithName:hyperLabel.fontName size:100], 
    
              }; 
    
    
    CGRect textRect = [text boundingRectWithSize:maxSize 
                options:0 
                attributes:attributes 
                context:nil]; 
    
    return textRect.size; } 
    

    トリッキーな部分は、 "ソート" algorihtmあります。私は自分自身の "流体テキストコンテナ"アルゴリズムを書いてしまい、スパークのバージョン の近くで動作するようです。 https://www.youtube.com/watch?v=yM13PSLW6Fg&feature=youtu.be

    内部のボックスを液体が容器に注ぎ込まれるものと見なすことが重要です。興味があれば、後でソースを開くことができます。お知らせ下さい!

    ありがとうございます!

    関連する問題