iOS轉換坐標系
目前在做一個ipad項目時有一個問題。我有一個UITableView的列表頁面。其中的UITableViewCell為自定義的cell,cell上有一個more Button.點擊這個更多按鈕會彈出UIPopover 來顯示。我設置的popover的方向箭頭是指向上,也就是popover的view在下方顯示。一切看起來都很不錯,但我在點擊最底部的cell上的more Button彈出popover后,顯示的popover上的view不完整,部分內容被遮住,有些功能用不了,應該算是bug的范疇。而我又不想改變popover箭頭的方向,那只能是按需更新箭頭方向,也就是說如果靠近底部的cell上的more button被按下時,顯示的popover的箭頭方向可以動態的改變,使得popover的view可以完全顯示出來。這些cell不只是最底部的cell,需要通過計算來得出這些cell上的popover的箭頭方向。這就需要我們得到當前cell所在屏幕上的坐標位置的高度是否大于popover的view的高度。如果小于說明可以顯示全部,如果大于,則需要改變popover的箭頭方向以顯示全部內容。這里問題就出現了,如果我們通過cell.button.frame 來獲取,只能是取到more button在cell上的坐標位置。而我們要取的是more button相對于整個屏幕的坐標位置。在網上查了一下資料,在UIview中有一個轉換坐標系的函數。通過此函數可以得到cell相對于屏幕的坐標。
CGRect rect=[self.view convertView:cell.frame fromView:self.tableView.frame];
NSLog(@"%@",NSStringFromCGRect(rect));
</span>