objective-c – CGRectMake中Rectangle的原点

objective-c – CGRectMake中Rectangle的原点,第1张

概述我的iPhone应用程序中有一个简单的屏幕,我希望在屏幕底部有一个320×100的矩形来捕捉触摸.这是我在touchesBegan中的代码:withEvent: for (UITouch *touch in touches) { CGPoint touchPoint = [touch locationInView:self.view]; NSLog(@"touch @ %f, 我的iPhone应用程序中有一个简单的屏幕,我希望在屏幕底部有一个320×100的矩形来捕捉触摸.这是我在touchesBegan中的代码: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,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文档,原点(0,480)是左下角,但这就像原点是左上角.

当我将矩形的原点更改为0,380时,一切都按预期工作.也许我今天早上没有适当的咖啡因,但为什么我看到文档和执行之间的这种差异?

解决方法 原点是在左上角还是左下角实际上取决于坐标系.

在UIKit中,(0,0)位于左上角,y轴向下增长.

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

在您的情况下,您从UIKit API获取点和矩形,因此原点位于左上角.

总结

以上是内存溢出为你收集整理的objective-c – CGRectMake中Rectangle的原点全部内容,希望文章能够帮你解决objective-c – CGRectMake中Rectangle的原点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1220259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存