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 のサイズを知る良い方法はありますか? sizeWithFont
NSStringのメソッドに似たものでしょうか?