2

これは私が作ったレポです。

https://github.com/lifesaglitch/UIWebViewFlashWhite

基本的な考え方は次のとおりです。

ヘッダー セルとコンテンツ セルの 2 つのセルを含む展開可能なテーブル ビューがあります。

ヘッダー セルをクリックすると、コンテンツ セルが挿入され、コンテンツ セルのサブビューである Web ビューに HTML 文字列が読み込まれます。

初めてセルを展開した場合、Web ビューには正しいフレーム サイズで白いフラッシュが表示されます。後続のエキスパンドにもフラッシュがある可能性がありますが、フレーム サイズが間違っています。

私が(プロジェクトで)試したのは、色をクリアに設定することですが、機能しません。また、webview のデリゲートを試し、html 文字列が読み込まれた後に hidden = NO を設定しましたが、デリゲート コールバックが呼び出されないことがあります。多分それは再利用可能なメカニズムのためです。

上記のリンクから私のプロジェクトをダウンロードして試してみてください。

サンプルコードを次に示します。

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];

    if (self) {

        self.backgroundColor = [UIColor clearColor];

        self.contentView.backgroundColor = [UIColor clearColor];

    }

    return self;
}

データ ソース メソッド:

    ContentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContentCell"];
    [cell.contentView loadHTMLString:@"<html><body style='background-color: #ff0000'>this is contentasdoifjoiwjeofiqjweoifjqopweifj </body></html>" baseURL:nil];

編集:

新しいバージョンをコミットしました。最初にプレースホルダーを使用して webview を非表示にし、ロード時に再表示しますが、まだ白いフラッシュ スクリーンが表示されます。

4

1 に答える 1

2

まず、 Apple のサンプルこのチュートリアルのように、展開/折りたたみアニメーションを HeaderView に変更する必要があります。

次に、ContentCell.h と ContentCell.m のコードを変更する必要があります。 contentView プロパティを他の IBOutlet に接続しないでください。tableCell にドラッグした後のビューは、そのサブビューになります。SupperView と Subview が同じ名前を持つと、クラッシュが発生する可能性があります。 cellWebView 名を選択し、UIWebView に接続します。

- (void)awakeFromNib{
    self.backgroundColor = [UIColor clearColor];
    [self.contentView setBackgroundColor:[UIColor clearColor]];
    [self.cellWebView setOpaque:NO];//Need to clear background of UIWebView
    self.cellWebView.backgroundColor = [UIColor clearColor];
}
于 2013-06-14T03:05:49.697 に答える