3

これらの各セル内に、いくつかのカスタム セルと Web ビューがあります。今、私の要件は、webview に読み込まれる HTML 文字列の高さを見つけて、これに基づいてカスタム セルの高さと webview の高さを変更することです。

ドキュメントの高さは -webViewDidFinishLoading デリゲートで確認できることは承知していますが、私のアプリでは、これらの各セル内に多数のセルと webview があるため、スクロール中や不要なコールバックを行っている間、アプリが遅くなるように感じます。

現在、私は弦の高さを与えるこれを行っています。

 -(float)getDynemicHeight:(NSString *)pstrText
    {
        CGSize constraint = CGSizeMake(683,600);

        CGSize size = [pstrText sizeWithFont:[UIFont systemFontOfSize:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

        CGFloat height = MAX(size.height, 44.0f);

        if (height>400) {
            return 400;
        }

        return height;
    }

<div>ただし、要素も文字列と見なされ、より大きな高さの値が返されるため、これは問題を引き起こします。

4

1 に答える 1

1

iOS 6 では、スタイル付きのテキスト (画像が混ざったテキストなどではなく) を表示したい場合は、Web ビューの代わりに NSAttributedString を使用することをお勧めします。テキストのさまざまなストレッチ、段落マージンなどでさまざまなスタイルのテキストを作成できます。そのメトリックは明確に定義されており、測定方法が付属しています。UILabel などの単純な UIView サブクラスは、属性付きの文字列を表示できるようになりました。または、インターフェイスに直接自分で描画することもできます。

http://www.apeth.com/iOSBook/ch23.html#_attributed_strings

それができない場合、あなたがやろうとしていることは基本的に不可能です。HTML の複雑な部分を描画するまで、Web ビューが複雑な HTML をどのように描画するかはわかりません。アプリのアーキテクチャを変更するだけです。たとえば、すべての Web ビューを事前に描画して、table-dataSource の時間中に必要な情報を取得できます。

于 2013-04-04T04:52:44.503 に答える