0

iAd が表示されているときに、テーブル ビューの高さを調整しようとしています。

次のコードを使用しています。

CGRect bounds = [tableView bounds];
[tableView setBounds:CGRectMake(bounds.origin.x, 
                            bounds.origin.y, 
                            bounds.size.width, 
                            bounds.size.height - 100)];

境界の代わりにフレームも試しました。

100 が広告の高さよりも大きいことはわかっていますが、上部と下部から 50 を取り、テーブルを中央に垂直に揃えているように見えます。底から100を取る代わりに。私の広告は一番下に表示されます。

オートサイジングできないかと思って、一番下の赤いマーカーをインターフェースビルダーから取り出しましたが、問題は解決しませんでした。

助言がありますか?

4

3 に答える 3

0

boundsとを混同しないでくださいframe。これらは似ていますが、非常に異なっており、bounds. 通常、初期サイズを取得するために、フレームから境界のみを設定します。他のすべてについては、通常、フレームを設定するだけです。

CGRect tableFrame = tableView.frame;
CGFloat iAdHeight = 50.f;
[tableView setFrame:CGRectMake(tableFrame.origin.x,
                               tableFrame.origin.y,
                               tableFrame.size.width,
                               tableFrame.size.height - iAdHeight)];

テーブルビューのアンカーを変更するなどの奇妙なことをしていない限り、これはうまくいくはずです。

と の違い、boundsおよびframeその他の優れた機能についてUIKitは、WWDC 2011 のセッション 121 のビデオ「UIKit レンダリングについて」を参照してください。

于 2012-04-17T22:54:40.500 に答える
0

これを試して:

CGRect bounds = [tableView bounds];
[tableView setBounds:CGRectMake(bounds.origin.x, 
                            bounds.origin.y - iAdHeight/2, 
                            bounds.size.width, 
                            bounds.size.height - iAdHeight)]; // Replace iAdHeight with height of iAd

テーブルビューの原点が中央にあるため、コードが機能しないため、下部のみを垂直方向に縮小するときに y 値を調整する必要があります。

于 2012-04-17T21:52:44.823 に答える
0

これにより、tableView のフレームが変更され、下部が 100 ピクセル小さくなります。(この方法で上、左、下、右を変更し、負の値を使用してサイズを元に戻すことができます)。

tableView.frame = UIEdgeInsetsInsetRect(tableView.frame, UIEdgeInsetsMake(0, 0, 100, 0));
于 2012-04-17T21:53:41.860 に答える