1

デリゲート メソッドを使用してUICollectionViewCells を動的に追加しています。メソッドが実行されるたびに作成される には、さまざまなサイズのコンテンツを含む が含まれます。プログラムで作成するときにのサイズを設定できません。代わりに、 というメソッドを実装する必要があります。UICollectionViewcellForItemAtIndexPathUICollectionViewCellUIWebViewUICollectionViewCellsizeForItemAtIndexPath

残念ながら、このサイズ決定メソッドは、実際にセルを作成するメソッドの前に呼び出されるようです。現時点ではUIWebView、セルの適切なサイズを見つけるために のサイズを参照することはできません。私が持っているのはの実際のコンテンツUIWebViewだけですが、コンテンツにはスタイル付きの HTML と画像が含まれているため、これを使用してサイズを見つける方法がわかりません。

メモリ内に作成UIWebViewsしてサイズを取得しようとしましたが、常にサイズが 0 になりました。私には醜いハックのように見えるので、これが機能しなかったことに少し安心しています。

他に試せることはありますか?

4

2 に答える 2

1

私の以前の答えは、UICollectionView ではなく UITableView で機能します。これはUICollectionViewControllerで私にとってはうまくいきました:

 NSString *webViewHeight =  [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"idOfMainElementInHtml\").offsetHeight;"];

これを

- (void)webViewDidFinishLoad:(UIWebView *)webView

NSIndexPath オブジェクトを高さの値にマップする NSMutableDictionary の値を覚えておいてください。このメソッドで毎回前の値と新しい値を比較し、Layout オブジェクトにこのディクショナリを使用して新しいレイアウトを計算させます。

楽しむ :-)

于 2013-06-17T14:00:51.053 に答える
1

たぶんこれが役立ちます:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
    CGRect frame = aWebView.frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;
}
于 2013-06-14T07:50:46.963 に答える