好吧,所以如果我理解正確,你想在x方向上-100來映射到屏幕上最左邊的點,x中的100將映射到屏幕上最右邊的點,-100 y方向映射到屏幕上的最低點,在y中映射到100點,以映射到屏幕上的最高點(或者您可能希望從我所擁有的內容中翻轉y,以便它與y變成的屏幕座標系統一致你會得到更低的屏幕?)。 而且我們也想考慮輪換。
據我瞭解,詢問UIScreen
其height
和width
:
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
但這並不佔旋轉。我知道的唯一另外一種方式非常簡單,就是詢問一個UIView
,它覆蓋了其屏幕上的width
和height
(最簡單的說,您可以讓您的viewcontroller的視圖覆蓋整個屏幕)。
如果你有一個UIView
,完美覆蓋整個屏幕(姑且稱之爲MyView的),你可以嘗試:
CGFloat width = myView.frame.size.width;
CGFloat height = myView.frame.size.height;
這些都應該由自己進行定向調整(從我的經驗,應該肯定,如果工作你會得到height
和width
或viewDidAppear:animated:
或其他任何東西,UIView
也需要是UIViewController
的視圖屬性或這個視圖的子視圖,如果沒有,你必須實現didRotateFromInterfaceOrientation:
或找到其他方式來告訴你的視圖關於任何旋轉)。一旦我們獲得了屏幕的「寬度」和「高度」,我們就可以從你的int轉換到屏幕位置。試試像這樣:
(CGPoint)convertX:(NSNumber *)x andY:(NSNumber *)y intoPoint
{
pointX = ([x intValue] + 100.0)*width/200.0;
pointY = (-[y intValue] + 100.0)*height/200.0; // remove the - sign at the front of the expression for y to grow as you move down the screen
return CGPointMake(pointX, pointY);
}
將x和y從-100轉換爲100到屏幕上它們各自的點。