- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view
Posted
技术标签:
【中文标题】- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view【英文标题】: 【发布时间】:2016-10-14 08:57:25 【问题描述】:UIView *sourceView = self.sourceImagesContainerView.subviews[self.currentImageIndex];
UIView *parentView = [self getParsentView:sourceView];
CGRect rect = [sourceView.superview convertRect:sourceView.frame toView:parentView];
NSLog(@"%@",NSStringFromCGRect(rect));
在tableView中用来获取imageView的位置到另一个view,但是当我滑动tableView的时候,rect是错误的。
我不知道如何处理。
【问题讨论】:
多么糟糕的标题! 欢迎来到 SO。请查看the tour。您可能还想查看What topics can I ask about、How to ask a good question 和The perfect question,以及如何创建Minimal, Complete and Verifiable example。发布您尝试过的代码和您收到的错误。尽可能具体,因为它会带来更好的答案。 【参考方案1】:除非您准备减去 contentOffset,否则不能将 tableView 用作此转换的父级。
UIView *sourceView = self.sourceImagesContainerView.subviews[self.currentImageIndex];
UITableView *parentView = self.tableView;
CGRect rect = [sourceView.superview convertRect:sourceView.frame toView:parentView];
rect = CGRectOffset(rect, 0-parentView.contentOffset.x, 0-parentView.contentOffset.y);
NSLog(@"%@",NSStringFromCGRect(rect));
最好使用非滚动父项:
UIView *sourceView = self.sourceImagesContainerView.subviews[self.currentImageIndex];
UIView *parentView = self.navigationController.view;
CGRect rect = [sourceView.superview convertRect:sourceView.frame toView:parentView];
NSLog(@"%@",NSStringFromCGRect(rect));
【讨论】:
以上是关于- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NSMutableArray 中存储 CGRect 值?
了解 convertRect:toView:、convertRect:FromView:、convertPoint:toView: 和 convertPoint:fromView: 方法