iOS 坐标转换convertRect 获取控件在父视图的坐标尺寸

项目中常有需获取单独某一控件或试图在其父视图中的坐标尺寸的相关需求。
可通过下方方法获取控件在父视图的固定坐标系
以下两种方法相同

CGRect rect=[cell convertRect:cell.textView.bounds toView:self.tableView];
CGRect rect = [self.tableView convertRect:cell.textView.bounds fromView:cell];

层级关系
cell.textView->
cell->
self.tableView(父视图)


  • 示例
//获取某个cell在当前tableView上的坐标位置
CGRect rectInTableView=[tableView rectForRowAtIndexPath:indexPath];
//获取cell在当前屏幕的位置
CGRect rectInSuperView=[tableView convertRect:rectInTableView toView:[tableView superview]];


//获取cell在当前collection的位置
CGRect cellInCollectionView = [collectionView convertRect:item.frame toView:collectionView];
UICollectionViewCell * item = [collectionView cellForItemAtIndexPath:indexPath]];
//获取cell在当前屏幕的位置
CGRect cellInSuperview = [collectionView convertRect:item.frame toView:[collectionView superview]];

而如果要求在页面滑动到某一控件处或者控件滑动到window页面某一坐标点处时需显示或进行某些操作,可以将toView设定为window,这时在scrollViewDidScroll中显示的坐标即为控件在当前页面的坐标

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    UIWindow * window=[[[UIApplication sharedApplication] delegate] window];
    CGRect rect=[self.textView convertRect:self.textView.bounds toView:window];
    if (rect.origin.y

转换像素点
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;

// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;

[fromView convertPoint:point toView:toView];
[toView convertPoint:point fromView:fromView];

转换Rect
// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;

// 将rect从view中转换到当前视图中,返回在当前视图中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;

[fromView convertRect:rect toView:toView];
[toView convertRect:rect fromView:fromView];

手指在UIScrollView上的滑动速率、方向以及移动距离
// velocityInView: 手指在视图上移动的速度(x,y), 正负也是代表方向,值得一体的是在绝对值上|x| > |y| 水平移动, |y|>|x| 竖直移动。
CGPoint velocity = [scrollView.panGestureRecognizer velocityInView:scrollView];

//translationInView : 手指在视图上移动的位置(x,y)向下和向右为正,向上和向左为负。X和Y的数值都是距离手指起始位置的距离
CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];

你可能感兴趣的:(iOS 坐标转换convertRect 获取控件在父视图的坐标尺寸)