今天中午吃饭的时候,公司一哥们突然问了我一句,怎么做一个超出tabBar高度的按钮,而且还能响应事件,吃完饭之后,我思索了一下,决定动手试试,其实逻辑很简单,只需要继承UITabBarController,重新自定义一个TabBarController就基本OK了,这里只贴出部分代码。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
NSLog(@"1-----%f------%f",point.x,point.y);
// 将point的x,y从以self为坐标系转换到以self.fb为坐标系进行参考
// self.fb是一个按钮
CGPoint buttonPoint = [self.fb convertPoint:point fromView:self];
NSLog(@"2-----%f------%f",buttonPoint.x,buttonPoint.y);
if ([self.fb pointInside:buttonPoint withEvent:event]) {
return self.fb;
}
return view;
}
主要是重写这个方法,楼主比较懒,写的比较简单,只是告诉大家基本的思路。
注意,比较难懂的就是如何巧妙的转换坐标系。
关于坐标系之间的转换,楼主正在研究,一定会尽快跟大家分享的。