Tom*_*m G 1 iphone grid objective-c quartz-graphics
仍然是一个iphone开发者,但尝试.
我希望用户触摸屏幕,此时将在视图上放置一个引脚(点).
我已经完成了这个(是的)但是我想抓住效果,并且无法想出解决方案.这就是我放置那个点的方式:
CGPoint drawPoint = CGPointMake(lastTouch.x - horizontalOffset,lastTouch.y - > verticalOffset); [drawImage drawAtPoint:drawPoint]; //告诉图像绘制自己
我有一个网格作为Viewcontroller的背景,重叠该网格我有一个UIView与自定义绘图,每次用户触摸屏幕时显示一个图钉.
(由于某种原因,点已经在用户触摸之前出现......尽管这是我目前正在研究的另一个查询)
因此对齐网格效果.有任何想法吗?
假设您的方法是让用户点击,然后将引脚放在最近的网格交叉点,这基本上只是一个舍入问题.
// assume these constants
// kVGridOffset, kHGridOffset: the difference between the origin of the view
// and the origin of the grid
// kVGridSpacing, kHGridSpacing: the size of the grid itself
// set initial coordinates from touch
CGPoint drawPoint = CGPointMake(lastTouch.x - horizontalOffset, lastTouch.y - verticalOffset);
// remove the offset, round to nearest increment of spacing, and return offset
drawPoint.x = floor((drawPoint.x - kHGridOffset) / kHGridSpacing + 0.5) * kHGridSpacing + kHGridOffset;
drawPoint.y = floor((drawPoint.y - kVGridOffset) / kVGridSpacing + 0.5) * kVGridSpacing + kVGridOffset;
// draw the image
[drawImage drawAtPoint:drawPoint];
Run Code Online (Sandbox Code Playgroud)
编辑:有了nearbyint()舍入的可用性,事情可能有点整洁:
drawPoint.x = nearbyint((drawPoint.x - kHGridOffset) / kHGridSpacing) * kHGridSpacing + kHGridOffset;
drawPoint.y = nearbyint((drawPoint.y - kVGridOffset) / kVGridSpacing) * kVGridSpacing + kVGridOffset;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |