2012-02-16 23 views
0

私はUITableViewを含むビューを持っています。表の上にiAdを表示したい。私は、これを行う最善の方法は、テーブルのcontentInsetをiAdバナーの高さに設定することだと思った。setContentInsetがUITableViewのrotateで正しく更新されない

アプリが回転をサポートしていますので、私はこのコードを持っている:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration { 

    NSString *bannerSize = (UIInterfaceOrientationIsPortrait(interfaceOrientation)) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape; 
    int bannerHeight = [ADBannerView sizeFromBannerContentSizeIdentifier:bannerSize].height+1; 

    iAdBanner.currentContentSizeIdentifier = bannerSize; 
    [mainTable setContentInset:UIEdgeInsetsMake(bannerHeight, 0, 0, 0)];  
} 

これは最初の回転で動作しますが、私は戻って回転するとき、contentInsetは、実際には、毎回変更されているようには見えませんデバイスを回転させて、 'inverse'値に設定されているように見える

しかし、私がスクロールしてテーブルをスクロールしようとすると、すべてが正しい位置にジャンプします。

ずっと読みになった後、私は上記のコードの最後に次の行を追加しました:

[mainTable scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:NO]; 

は、これが働いていました! - しかし - 私はテーブルがトップに戻るデバイスが回転するたびにスクロールしたくないので、私はこれを試してみました:

[mainTable scrollRectToVisible:CGRectMake(mainTable.contentOffset.y+bannerHeight, 0, 10, 10) animated:NO]; 

しかし、私は、テーブルの上部にある元の問題じゃない場合現在のセクションのヘッダー(プレーンな表)は約20ピクセルが高すぎたり、低すぎたりして、手動でスクロールすることで直ちに修正されます。

だから今私は迷っています - どんなアイデアですか?

答えて

0

おそらく、UITableViewcontrollerの代わりにUIViewControllerを使用し、プログラムでUITableViewを追加することをお勧めします。次に、広告のフレームとテーブルビューを簡単に設定できます。回転させたら、回転方法を使用してフレームを再度変更してください!

+0

しかし、広告は画面からスクロールします - はい? –

+0

ああ、あなたはそれを望んでいない、私の答えを再度確認してください、私はそれを編集しました。 –

+0

これは私がやったことです - 多かれ少なかれ - UIViewはIBでUITableViewを含み、ADBannerViewをプログラマチックに追加しました - コンテナビューの唯一の理由は利用可能なスペースの合計を記録することでした –

関連する問題