iOS转换坐标系

reyzhang 12年前

目前在做一个ipad项目时有一个问题。我有一个UITableView的列表页面。其中的UITableViewCell为自定义的cellcell上有一个more Button.点击这个更多按钮会弹出UIPopover 来显示。我设置的popover的方向箭头是指向上,也就是popover的view在下方显示。一切看起来都很不错,但我在点击最底部的cell上的more Button弹出popover后,显示的popover上的view不完整,部分内容被遮住,有些功能用不了,应该算是bug的范畴。而我又不想改变popover箭头的方向,那只能是按需更新箭头方向,也就是说如果靠近底部的cell上的more button被按下时,显示的popover的箭头方向可以动态的改变,使得popoverview可以完全显示出来。这些cell不只是最底部的cell,需要通过计算来得出这些cell上的popover的箭头方向。这就需要我们得到当前cell所在屏幕上的坐标位置的高度是否大于popoverview的高度。如果小于说明可以显示全部,如果大于,则需要改变popover的箭头方向以显示全部内容。这里问题就出现了,如果我们通过cell.button.frame 来获取,只能是取到more buttoncell上的坐标位置。而我们要取的是more button相对于整个屏幕的坐标位置。在网上查了一下资料,在UIview中有一个转换坐标系的函数。通过此函数可以得到cell相对于屏幕的坐标。
CGRect rect=[self.view convertView:cell.frame fromView:self.tableView.frame];
NSLog(@"%@",NSStringFromCGRect(rect));
</span>