0

理解できないオリエンテーション マジックが原因の問題に直面しています。まず、ViewController をロードする NavigationController を使用しています。このViewControllerにはScrollViewがあります。ScrollView の位置を尋ねると、間違ったデータが返されます。例: ScrollView の x 座標は、インターフェイス ビルダーでは 90 です。プログラムで ScrollView のフレームを取得すると、280 が返されます。アプリ内のすべてが横向きに設定されています。Info.plist、概要、ViewControllers の実装、インターフェイス ビルダー。

私はいくつかのスクリーンショットを作りました。多分彼らは間違いを見つけるのを助けています.

概要の設定

ScrollView のインターフェイス ビルダーのフレーム

bar がインターフェースビルダーと異なる実装のフレーム

ScrollViewを含むViewControllerの設定

そして、すべての ViewController には次のものがあります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

ストーリーボードから NavigationController を削除し、シミュレートされたメトリックを推論のままにすると、最初の ViewController がストーリーボードの縦向きに切り替わります。

NavigationController からビューのサイズをログに記録すると、縦向きになります

NSLog(@"frame %@", NSStringFromCGRect(self.view.frame));

出力は768x1024です

4

2 に答える 2

1

フレームから x を計算するときは通常、方向を考慮に入れる必要があると思いましたが、それが変換がある理由ですか? iPhone SDK: 向き (横向きと縦向きのビュー)

X 値のフレームをクエリするだけでは、常に正確な結果が得られるとは限りません。

于 2012-08-21T12:04:21.930 に答える
0

問題は、使用される方法、つまりviewDidLoad:方法です。その時点では、サブビューはまだ描画されておらず、フレームもまだ初期化されていないため、問題は解決しています。

使用する代わりに使用viewDidLoad:するviewWillAppear:animated:viewDidAppear:animated:、問題を解決してください。

ハッピーコーディング:)

于 2012-08-21T12:40:14.077 に答える