objective-c – CGRectMake中Rectangle的原点
发布时间:2020-12-16 10:27:11 所属栏目:百科 来源:网络整理
导读:我的iPhone应用程序中有一个简单的屏幕,我希望在屏幕底部有一个320×100的矩形来捕捉触摸.这是我在touchesBegan中的代码:withEvent: for (UITouch *touch in touches) { CGPoint touchPoint = [touch locationInView:self.view]; NSLog(@"touch @ %f,%f",t
我的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获取点和矩形,因此原点位于左上角. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |