2012-09-22 41 views
0

我認爲statusBarFrameapplicationFrame完全相互補充以形成整個屏幕的邊界。該框架的值是相對於「原始」縱向屏幕座標(我認爲是屏幕的邊界)。因此,例如,當一臺iPad旋轉倒置的爲什麼從兩個不同的對象獲取applicationFrame和statusBarFrame?

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}} 

但一個問題是,如何互爲補充,來自兩個不同的對象這兩個值來:應用程序實例和UIScreen實例,但不是來自同一個對象? (比如,來自UIScreen的對象?)

回答

1

簡而言之,這是因爲每個應用程序只有一個狀態欄,但單個應用程序可能有多個屏幕(例如,通過AirPlay)。

0

許多Application Kit API和Objective-C範例都基於所有權的概念。

當屏幕擁有應用程序窗口時,應用程序擁有其狀態欄。

例如(這裏沒有汽車)我擁有我家的桌子,但房東擁有我的房子。

更重要的是,Apple創建了Appkit API並創建了自己的「物理」和一致性。如果你想讓你自己的宇宙和物理學制作你自己的API。

查看關於創建持久代碼的WWDC 2012講座。它真的很好。

+0

如果這兩個幀屬於同一個對象,它會有意義嗎? (考慮所有權)。這兩個框架看起來像兄弟姐妹,如果使用你的模擬,有一個共同的父母,有點像一張桌子和一把互相補充的椅子 –

相關問題