3

Instagram がタグを流動的にレイアウトする方法に常に興味があり、この機能の背後にあるものを知りたいと思っていました。私には、彼らはUIButtonを使用していて、ボタンの配置を1行ずつ計算しているように見えますか? そうですか?または、各タグ行の配置を行ごとに手動で計算したり、複数のタグの幅がぴったり合っている場合に並べて配置したりする必要のない、より簡単な方法はありますか?

または、NSAttributedStrings を使用していますか?

何か案は?

これが私が参照しているレイアウトの例です。

ここに画像の説明を入力

4

2 に答える 2

0

UITextView と NSAttributedString を使用してそれを行う簡単な方法を次に示します。

  1. リンクの文字範囲を取得するには、正規表現を使用します。
  2. 一致した範囲にリンク スタイルを追加します。
  3. 実行するタップ アクションを参照するカスタム属性を範囲に追加します。
  4. タッチ時に、文字のインデックスが一致した範囲内にある場合は、リンクの書式を変更して強調表示し、関連するタップ アクションを実行します。

iOS7 で位置の文字のインデックスを取得する方法:

- (NSUInteger) getCharIndexAt: (CGPoint) location
{
    NSLayoutManager *layoutManager = self.layoutManager;
    NSUInteger characterIndex = NSNotFound;
    characterIndex = [layoutManager characterIndexForPoint:location inTextContainer:self.textContainer fractionOfDistanceBetweenInsertionPoints:NULL];

    return characterIndex;
}

WWDC 2013 intro to TextKit Demo もチェックしてください。

iOS7 テキスト ユーティリティ

于 2013-11-05T16:34:33.850 に答える