Objective c CGRectMake中矩形的原点

Objective c CGRectMake中矩形的原点,objective-c,iphone,Objective C,Iphone,我的iPhone应用程序中有一个简单的屏幕,我希望屏幕底部有一个320x100的矩形来捕捉触摸。这是我的代码在触摸开始:withEvent: for (UITouch *touch in touches) { CGPoint touchPoint = [touch locationInView:self.view]; NSLog(@"touch @ %f, %f", touchPoint.x, touchPoint.y); // build a rectangle

我的iPhone应用程序中有一个简单的屏幕,我希望屏幕底部有一个320x100的矩形来捕捉触摸。这是我的代码在
触摸开始:withEvent

for (UITouch *touch in touches) {

    CGPoint touchPoint = [touch locationInView:self.view];

    NSLog(@"touch @ %f, %f", touchPoint.x, touchPoint.y);

    // build a rectangle where we want to capture a URL tap
    CGRect rectangle = CGRectMake(0, 480, 320, 100);

    NSLog(@"midX, midY = %f, %f", CGRectGetMidX(rectangle), CGRectGetMidY(rectangle));

    // check to see if they tapped the URL    
    if (CGRectContainsPoint(rectangle, touchPoint)) {
        NSLog(@"You touched inside the rectangle.");
    }        
}
现在,此代码无法按预期工作…从矩形中点开始的日志显示,我的矩形是在
midX处构建的,midY=160.000000,530.000000
。根据CGPoint文档,原点
(0480)
是左下角,但这就像原点是左上角一样


当我将矩形的原点更改为0380时,一切都按预期进行。也许今天早上我还没有摄入足够的咖啡因,但为什么我看到文档和执行之间的差异呢?

我的文档也说了左下角。但我认为这是文档中的一个错误。(好吧,这对于Mac桌面来说是正确的,所以他们可能只是在通过文档进行移植时忽略了这一点。)


在iPhone上,原点肯定是左上角

原点是在左上角还是左下角取决于坐标系

在UIKit中,(0,0)位于左上角,y轴向下延伸

在CoreGraphics中,(0,0)位于左下角,y轴向上增长。为了将CG适应UIKit,默认情况下会应用垂直反射,这就是为什么如果直接使用
-drawRect:
中的CG函数绘制图像或字符串,则会将它们颠倒过来


在您的例子中,您将从UIKITAPI获得点和矩形,因此原点位于左上角。

很有趣。投票支持您,希望其他人在接受之前同意/不同意。谢谢