当前位置:  开发笔记 > IOS > 正文

UITableViewCell中的UIButton和获取边界/框架

如何解决《UITableViewCell中的UIButton和获取边界/框架》经验,为你挑选了2个好方法。

我在UITableView中的UITableView单元格中有一个UIButton.结果是一个包含按钮的列表.当按下UIButton时,它会调用一个touchUpInside方法,一切都很棒.我遇到的问题是我想在按下按钮时从按钮的位置(框架)缩小新视图.如果我只是得到了UIButton的界限

origButton.frame

它位于UITableCell的坐标中,类似于3,50,40,25.这对于列表中的所有按钮都是相同的,因此无论按下列表中的哪个按钮,我都会得到这些坐标.现在,如果我真的抓住了我的视图坐标

self.frame

当调用touchUpInside方法时,我得到更多可用的东西.然后我得到了我的细胞的坐标.大!!所以我可以从UIButton缩小新视图.大!!

但问题出在这里:如果向上滚动列表,点击按钮,视图不会从按钮缩小,而是从屏幕下方的位置缩小.问题是,我所拥有的坐标是针对单元格,在它向上滚动之前.事实上,所有单元格的所有坐标都反映了它们在表格中的实际位置,只有第一个可见集合的坐标可用.滚动没有改变这些坐标.

我想也许我可以使用超级视图的坐标,但那些没有帮助.

任何人都知道如何获得表中列出的按钮(或视图或任何其他项)的准确坐标,或者不可能?

以下是我计算新视图中心点的方法:

floatingView.center = CGPointMake(origButton.frame.origin.x + 
                                  origButton.frame.size.width / 2,
                         self.frame.origin.y + self.superview.frame.origin.y);

谢谢!



1> Corey Floyd..:

更新:

记住UITableView是一个scrollView.因此它在tableView(scrollView)中嵌入了contentView.

您收到的帧是正确的,但它不参考您想要的视图帧.相反,框架是对contentView的引用.滚动时,单元格不会更改以引用contentView.frame.但是,当您滚动时(contentOffset的数量),contentView.frame会更改引用tableView的框架.

所以这留下了两个选择:

使用以下方法之一将单元格的框架从contentView的引用转换为tableView:

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

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

或者,手动从帧中减去contentOffset.

我推荐第一种方法.


原答案:

我不确定您是否已将UITableViewCell子类化或从UITableViewController执行此代码.

但是,我认为你想要的方法是:

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath

这是UItableView的一种方法,可以让你获得任何单元格的矩形.



2> logancautrel..:

我试图做一些非常相似的事情.在iPad上,当选择表格单元格时,我想在单元格旁边显示一个弹出窗口.以下代码适用于执行此类操作.在这种情况下,self是一个UITableViewController.

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

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有