1.是设置按钮的frame大,设置按钮中的图片区域小(不是背景图),这有两种实现方法
第一种:
button.imageEdgeInsets=UIEdgeInsetsMake(15, 15, 15, 15);设置按钮中的imageview区域距离按钮吃内间距个方向都是15,使图片区域变小。这也可以用来保证按钮中间的图片不会被拉伸,计算内间距是按钮中的图片区域正好是图片的此处。
第二种:
实现方式是自己写个button继承UIButton,重写button的
- (CGRect)imageRectForContentRect:(CGRect)contentRect{
return CGRectMake(self.frame.size.height*0.175, 0, self.frame.size.height*0.65, self.frame.size.height*0.65);
}方法,返回的尺寸是按钮中的imageview在按钮中的区域。这种方法可以用来实现按钮上面是图片下面是文字的按钮。自定义按钮中显示的位置。
2.是设置按钮的尺寸小,重写按钮的响应区域,让按钮的响应区域变大。也是创建个按钮继承UIButton,重写
/**
重写响应区域
@param point 点击的位置 pointInside一般和HitTest一起使用 用来写事件的响应分发
@param event 点击的事件
@return 是否响应
*/
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
//计算需要响应的区域 按钮左右两边各多出100的宽度来响应
CGRect responseRect=CGRectMake(-100, 0, ScreenWidth+2*100, ScreenHeight);
NSLog(@"响应的区域======%@ ",NSStringFromCGRect(responseRect));
return CGRectContainsPoint(responseRect, point);
}
这种方法可以用来自定义个view,来替换VC中的view,是view的响应区域变大,整屏翻页的时候可以用到。