美文网首页iOS开发
iOS之UIView的坐标转换

iOS之UIView的坐标转换

作者: 王建翔 | 来源:发表于2017-05-03 14:31 被阅读0次

    最近有个需求,需求如下:vc下有一个tableview和一个button,这儿以568作为屏幕高。tableview的frame为(0,0,320,568);button的frame为(0,20,320,60),tableview在最上层,盖住button,然后设置tab的ContentInset为(100,0,0,0),tab的背景色为透明,试问,当我点击button的时候我应该怎么样才能拿到button 的点击事件??

    因为这个我是用坐标转换来做的,所以这里就记录一下坐标转换。

    //将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值

    - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;

    //将像素point从view中转换到当前视图中,返回在当前视图中的像素值

    - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;

    或当已知viewA时:

    [self convertPoint:point toView:viewA]

    [viewA convertPoint:point fromView:self]

    //将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect

    - (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;

    //将rect从view中转换到当前视图中,返回在当前视图中的rect

    - (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;

    例把UITableViewCell中的subview(viewA)的frame转换到controllerA中

    // controllerA 中有一个UITableView, UITableView里有多行UITableVieCell,cell上放有一个viewA

    //在controllerA中实现:

    CGRect rect = [cell convertRect:cell.viewA.frame toView:self.view];

    CGRect rect = [self.view convertRect:cell.viewA.frame fromView:cell];

    //此rect为viewA在controllerA中的rect

    或当已知viewA时:

    CGRect rect = [viewA.superview convertRect:viewA.frame toView:self.view];

    CGRect rect = [self.view convertRect:viewA.frame fromView:viewA.superview];

    相关文章

      网友评论

        本文标题:iOS之UIView的坐标转换

        本文链接:https://www.haomeiwen.com/subject/xtwktxtx.html