这个弹出窗口的位置是相当的纠结。
popover.popoverContentSize = CGSizeMake(300, 300); //弹出窗口大小。这个没什么好说的,就是大小,当然不能超过屏幕。
CGRect popoverRect = CGRectMake(x0, y0, x1, y1);
[popover presentPopoverFromRect:popoverRect
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown //箭头方向
animated:YES];
最烦人的就是上面那个CGRectMake(x0, y0, x1, y1),
咋一看,很简单,起点坐标,矩形宽高,
其实远不是那么回事。这三个参数压根就与矩形大小无关。因为上面那个已经确定了,这个只是确定指示箭头的位置。
前面两个是参照坐标,也就是参照坐标,想想就知道什么是参照坐标了。后面两个,第三个是相对参照坐标的坐标,比如若
x0 = 10,而x1=200,那么实际绝对横坐标应该是210,纵坐标更扯了,在参照坐标的基础上,又乘以2,也就是实际坐标只有
一半。那么实际绝对坐标就是
(x1+x0, (y1+y0)/2),
当然这一切都是以inView后面的参数为参考的。
还有一点就是如果坐标超出屏幕,那只能达到最大限度了。
调这个很费时间,这是笔者的一点所得,希望对大家有所帮助,也希望大家发现更多的规律。