0

UIImageView (または他のビュー) に対して積み重ねられた UIWebView があるとします。

ここに画像の説明を入力

UIImageView を配置する場所がわかるように、UIWebView のサイズを変更したいと考えています。私が行う方法は、UIWebView の読み込みが完了するのを待つことです。

webViewCalculating = YES;
while (webViewCalculating == YES) {
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}

次に、この提案に従って、UIWebView の読み込みが完了したらサイズを変更します。

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    CGRect frame = webView.frame;
    frame.size.height = 1;
    webView.frame = frame;

    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    webView.frame = frame;

    heightSoFar += webView.frame.size.height;
    webViewCalculating = NO;
}

この時点で、UIWebView の高さがわかり、それに応じて UIImageView を配置できます。ただし、別のView Controllerを押してこれに戻ると[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode、webViewが最初に高さの計算を完了するまで、ハッキーは待機していないようです。ロードを待たずに UIWebView のサイズを知る良い方法はありますか? sizeWithFontNSStringのメソッドに似たものでしょうか?

4

2 に答える 2

0

プロパティはリセットされないため、このコントローラーに戻ったときにwebViewCalculating = YES; while ループがすぐに失敗しないようにする必要があります。

すでにそれを行っている場合は、入れてみることができます

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

以内

-(void)webViewDidFinishLoad:(UIWebView *)webView
{

}

デリゲート メソッド

これが役に立つことを願っています。

于 2013-05-02T13:44:57.910 に答える