CGRect CGPoint
每個視圖都使用一個邊框定義其界限。這個邊框指定了視圖的輪廓:其位置、寬度和高度。
我們使用Core Graphics結構宋定義邊框矩形。對于邊框,這通常表示由原點(CGPoint,x和y)和大小(CGsize,寬度和高度)組成的CGRect矩形。下面是這些類型的簡要描述。
1.CGRect
CGRect結構在屏幕上定義了一個矩形。它包含原點(rect.origin)和大小(rect.size)。需要了解以下CGRect函數。
·CGRectMake(origin.x,origin.y,size.width. Size.height)在代碼中定義矩形。
·NSStringFromCGReot(someCGRect)把CGRect結構轉變為格式化字符串。
·CGRectFromString(aString)由字符串表示恢復出矩形。
·CGRectlnset(aRect)用來創建較小或較大的矩形(中心點相同)。使用正的內嵌值表示較小的矩形,使用負的內嵌值表示較大的矩形。
·CGRectIntersectsRect(rect 1.feet 2)可以判斷矩形結構是否交叉,兩個矩形對象是否重疊。
·CGRectZero是一個高度和寬度為零、位于(0,0)的矩形常量。需要創建邊框但還不確定邊框大小或位置時,可以使用此常量。
2.CGPoint和CGSize
前者通過x和y坐標定義,后者包括寬度和高度。使用CGPointMake(x,y)創建點。CGSize- Make(width,height)創建大小。雖然這兩個結構看上去相同(兩個浮點值),但iPhoneSDK對二者有所區別。點表示位置值,大小表示程度值。不能將myFrame.origin設置為大小。
與矩形相同,可以將它們與字符串進行相互轉換,可用如下函數:NSStringFromCGPoint()、 NSStringPromCGgize()、CGSizeFromString()和CGPointFromString()。
3.定義位置
可以通過設置中心點(CGPoint)或邊界(CGRect)定義視圖的位置。與邊框不同,視圖的邊界使用它自己的坐標系來反映視圖的邊框。在實際應用中,這表示邊界的原點為(0.0,0.0),大小是它的寬度和高度。
當希望移動視圖或重新調整視圖大小時,可以更新其邊框的原點、中心點或大小。不需要擔心顯示或隱藏的矩形部分。iPhone將負責完成重新繪圖。這允許將視圖作為切實的對象對待,并將呈現問題委托給CocoaTouch。例如[myViewsetFrame:CGRectMake(0.of,50.Of.mywidth, myheight)];。
4.轉換
標準CoreGraphics調用會實時轉換視圖。舉例來說,可以應用剪輯、旋轉或其他平面幾何效果。CocoaTouch支持一整套仿射轉換(轉換、旋轉、縮放和傾斜等)。任何UIView子類的drawRect:方法都提供通過低級Core Graphics調用進行繪圖的入口點。
說明 在調用Core Graphics函數時,記住Quartz從左下方建立坐標系,而UIViews的原點位于左上方。
5.其他視圖特征
除了物理屏幕布局之外,還可以設置以下視圖特征。
·每個視圖都有一個半透明要素(alpha),其值介于不透明和透明之間。可以通過[myView setAlpha:value]來調整它,其alpha值介于0.0(完全透明)和1.0(完全不透明)之間。
·可以為視圖背景指定一個顏色。[myView setBackgroundColor:[UIColor redColor])可將視圖設置為紅色。
6.視圖布局
圖2-2顯示了普通iPhone應用程序屏幕的布局。對于當前發布的iPhone,屏幕大小在縱向模式下為320X480,在橫向模式下為480X320。無論使用橫向還是縱向模式,位于屏幕頂部的標準狀態欄都占用20像素的高度。要查詢狀態欄邊框,可以調用[[UIApplication sharedApplication] statusBarPrame]。
如果更愿意釋放這20像素的屏幕空間,則可以完全隱藏狀態欄。使用此UIApplication調用: [UIApplication sharedApplication]setStatusBarHidden:YES animated:NO]。或者,在應用程序的Info.plist文件中將UIStatusBarHidden設置為<true/>。
要僅在橫向模式下運行應用程序,可以將狀態欄方向設置為橫向。如果計劃隱藏狀態欄,也應執行此操作(即[[UIApptication sharedApplication] setStatusBarOrientation: UIInEerfaceOrientationLandscapeRight])。這將強制窗口并排顯示井生成正確的橫向鍵盤。
UIScreen對象代表iPhone的物理屏幕([UIScreen malnScreen])。此屏幕對象建立視圖布局邊界與像素空間之間的映射。它返回全屏大小(bounds)或只是應用程序占用的矩形(applicationFrame)。后面會考慮狀態欄以及任何工具欄/導航欄(如果已使用)的大小。
默認情況下,UINavigationBar、UIToolbar和UITabBar對象的高度均為44像素。使用這些數字計算iPhone屏幕上的可用空間,在未使用Interface Builder的布局工具時對應用程序進行布局