美文网首页
对UIButton 的操作(彩票案例)

对UIButton 的操作(彩票案例)

作者: 努力奔跑的小男孩 | 来源:发表于2017-09-30 14:48 被阅读6次

可以实现的效果:

1.取消UIButton的高亮状态
2.缩小UIButton的响应区域
3.对UIButton中的UILabel 的位置尺寸的设置
4.对UIButton中的UIImageView 的位置尺寸的设置

#import "YYButton.h"

@implementation YYButton

/**
 不想让UIButton有高亮状态
 @param highlighted 取消按钮高亮状态下做的事
 */
- (void)setHighlighted:(BOOL)highlighted{
    
}


/**

 缩小UIButton的响应区域
 @param point 用户点击的点
 @param event 响应的事件
 @return 用户点击的区域是否有时间响应
 */
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    CGRect rect = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height * 0.5);
    if (CGRectContainsPoint(rect, point)) { // 这个点是否在这个区域内 返回一个BOOL
        // 在指定的范围内
        return [super hitTest:point withEvent:event];
    }
    return nil;
}


/**
 对UIButton中的UILabel 的位置尺寸的设置
 @param contentRect 当前按钮的位置尺寸
 @return 返回当前按钮当中label的位置尺寸
 */
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
    CGFloat w = 40;
    CGFloat h = 48;
    CGFloat x = (contentRect.size.width - w) / 2;
    CGFloat y = 20;
    return CGRectMake(x , y, w, h);
}

/**
 对UIButton中的UIImageView 的位置尺寸的设置
 @param contentRect 当前按钮的位置尺寸
 @return 返回当前按钮当中图片的位置尺寸
 */
- (CGRect)imageRectForContentRect:(CGRect)contentRect{
    CGFloat w = 40;
    CGFloat h = 48;
    CGFloat x = (contentRect.size.width - w) / 2;
    CGFloat y = 20;
    return CGRectMake(x , y, w, h);
}

/* 在这里也可以修改button内部imageView 和 titleLabel 的frame
- (void)layoutSubviews{
    [super layoutSubviews];
    self.imageView.frame = ...
    self.titleLabel.frame = ...
}
*/

@end
#define angle2Rad(angle) ((angle) / 180.0 * M_PI) // 数值转化为弧度

效果图:

效果图.png 旋转.png

相关文章

网友评论

      本文标题:对UIButton 的操作(彩票案例)

      本文链接:https://www.haomeiwen.com/subject/ifogextx.html