0

画面全体の境界を形成するために、お互いを正確に考えstatusBarFrame、補完します。applicationFrameそして、フレームの値は、「生の」縦向きの画面座標(画面の境界だと思います)に相対的です。たとえば、iPad を上下逆に回転させると、次の出力が

NSLog(@"the status bar frame is %@", 
    NSStringFromCGRect([[UIApplication sharedApplication] statusBarFrame]));

NSLog(@"the applicationFrame is %@", 
    NSStringFromCGRect([[UIScreen mainScreen] applicationFrame]));

the status bar frame is {{0, 1004}, {768, 20}}
the applicationFrame is {{0, 0}, {768, 1004}}

しかし、質問は、相互に補完するこれら 2 つの値が、アプリケーション インスタンスとインスタンスという 2 つの異なるオブジェクトに由来するUIScreenのに、同じオブジェクトに由来しないのはなぜでしょうか? (たとえば、両方ともUIScreenオブジェクトから?)

4

2 に答える 2

1

簡単に言えば、アプリケーションごとにステータス バーが 1 つしかないためですが、1 つのアプリケーションに対して (AirPlay 経由などで) 複数の画面が表示される可能性があります。

于 2012-09-22T15:00:52.187 に答える
0

多くの Application Kit API と Objective-C のパラダイムは、所有権の概念に基づいています。

画面がアプリケーション ウィンドウを所有している間、アプリケーションはその statusBar を所有しています。

例 (ここには車はありません) 私は家のテーブルを所有していますが、家主が私の家を所有しています。

さらに言えば、Apple は Appkit API を作成し、独自の「物理学」と一貫性を作成しました。独自の宇宙と物理学が必要な場合は、独自の API を作成してください。

長持ちするコードの作成に関する WWDC 2012 の講義をご覧ください。これは本当によく入ります。

于 2012-09-22T10:51:08.517 に答える