好吧,所以如果我理解正确,你想在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到屏幕上它们各自的点。