convertPoint本身并不难理解,但是下面的这些特殊情况一定要注意,经过测试,总结如下:
UIView* fromView = [[UIView alloc] init];
[fromView convertPoint:aPoint toView:toView];
就是将fromView坐标系中的一个点转换为toView中的一个点。
这时需要注意:
1、如fromView是nil,则返回CGrectZero。
这种情况发生在view的init方法中; [self.superView convertPoint:aPoint toView:toView];
此时的self.superView是nil。
2、如果toView是nil则相当于:[fromView convertPoint:aPoint toView:selfView.window];
所以如果要将坐标转为相对于窗口的坐标,则只要如下就可以了:
[fromView convertPoint:aPoint toView:nil];
3、fromView和toView还没有放到一个view中去,也就是没有对它们执行addSubview方法,此时它们的superView是nil。这种情况一定要小心了,
尽量不要这么作,因为view还没有建立明确的相对坐标系,这时cocoa框架一定很抓狂,作了很多假设,一般是以创建fromView和toView的那个view作为superView来处理的,但是并不确定。
所以一定要小心。
分享到:
相关推荐
下面将详细讨论实现这样一个功能所需的关键知识点。 1. **用户界面设计**: - 使用`UIKit`框架创建界面,包含尺子的背景图像和刻度线。刻度线应清晰地以厘米为单位标记,以便用户准确读取。 - 可能会有一个触摸...
下面我们将详细探讨这个知识点。 1. **CALayer**: - CALayer是所有UIView的基础,它负责绘制和显示内容。在iOS中,每一个UIView都有一个对应的CALayer,它们之间通过Layer-View绑定机制关联。 - 图层属性:如...
convertPoint:fromLayer:提供了坐标转换的方法,而geometryFlipped属性可以实现图层的垂直翻转。 CALayer中的事件响应机制,比如containsPoint:方法,是根据图层的坐标系来判断一个点是否在图层的范围内。最后,...
可以使用MKMapView的convertPoint:toCoordinateFromView:方法将屏幕坐标转换为地图坐标。之后,你可以选择将这个新坐标添加到路径数组中,更新路径并重新渲染。 4. **自定义两点坐标**: 用户可以通过交互式的方式...
在iOS开发中,我们可以使用MAMapView的convertCoordinate:toPointToView:和convertPoint:toCoordinateFromView:方法来实现坐标转换。这些方法可以将经纬度坐标系转换为指定view坐标系的坐标,或者将指定view坐标系的...
CGPoint newP = [self convertPoint:point toView:self.centerButt]; if ( [self.centerButt pointInside:newP withEvent:event]) { return self.centerButt; }else{ return [super hitTest:point ...
在测试Draft1中,可能包含了实现这一功能的部分代码或原型,开发者可以根据这些资料进一步完善和优化代码。总的来说,"dragButton"是一个提升用户体验的创新实践,通过良好的手势识别和视图控制,可以让用户更加直观...
如果视图有父视图,记得使用`convertPoint:fromView:`或`convertPoint:toView:`来转换坐标系统,确保在正确的坐标系中进行操作。 - 为了避免视图移动过程中出现闪烁,可以开启视图的`userInteractionEnabled`属性为...
`convertPoint:toView:`和`convertPoint:fromView:`这样的方法可能被封装,简化了不同视图之间坐标系统的转换。 5. **截图功能**:为了方便开发者快速获取视图的截图,`UIView+Utils`可能包含一个`snapshotImage`...
以下是对标题和描述中所述知识点的详细说明: 1. **初始化地图视图**: 初始化地图视图主要是通过创建`MKMapView`对象并将其添加到父视图中。例如,可以在`viewDidLoad`方法中完成这一操作,通过`alloc`和`...
这个过程涉及到`-[UIView convertPoint:fromView:]`或`-[UIView convertPoint:toView:]`等方法。 3. **路径存储**:为了记录用户手势路径,我们需要一个数据结构来保存每个点。数组(NSArray 或 NSMutableArray)是...
let localPoint = svgView.layer.convertPoint(point, to: tappedSVGElement) print("点击在SVG元素内的坐标:\(localPoint)") // 在这里处理点击事件,如获取地图上的具体位置信息 } } ``` 至此,你已经成功...
可以使用`convertPoint:fromView:` 或 `convertPoint:toView:` 方法来进行坐标转换。 5. **路径匹配算法(Path Matching Algorithm)**: 为了验证用户输入的手势是否匹配预设的解锁模式,我们需要实现一个算法。...
这种情况下,可以使用 NSView 的 `convertPoint:fromView:` 和 `convertPoint:toView:` 方法来进行坐标转换。 #### 六、矩形作为对象 由于 `NSRect`、`NSPoint` 和 `NSSize` 都不是对象类型,因此不能直接将它们...
CGPoint fromCenter = [animationView convertPoint:CGPointMake(animationView.frame.size.width * 0.5f, animationView.frame.size.height * 0.5f) toView:keyWindow]; 2)动画结束位置endCenter 代
本文将深入探讨如何在Objective-C中实现在`NSTableView`中添加复选框,并提供详细步骤。 首先,我们需要创建一个自定义的`NSCell`子类,比如`CheckboxTableCell`,继承自`NSTextFieldCell`。这样我们可以定制`...
快捷键的使用能够大大提高工作效率,下面就详细介绍Painter软件中常用的一些快捷键。 1. 文档视图与页面操作快捷键 - Magnifier(放大镜工具): [M] - AltGrabber(快捷键工具): [Alt]+[G] - RotatePage(旋转...
本篇将详细介绍如何通过扩展UILabel来实现这个功能,以及具体代码实现。 首先,我们要知道UILabel本身并不支持直接对某部分文字设置点击事件,因为它不处理子视图。但我们可以利用NSAttributedString的特性,结合...
- `convertPoint:toCoordinateFromView:`:将视图坐标转换为地理坐标。 - `convertRegion:toRectToView:` 和 `convertRect:toRegionFromView:`:用于转换地图区域与视图矩形之间的关系。 地图上的标注(大头针)是...