圆点view被切掉一块的bug

需要实现有新消息提醒时在title的右上角有红点提示,一个本来很简单的功能,但是遇到一个很奇葩的问题,有一个红点在6、6p上显示,红点的右边会有一点点被切平了,但是其他的几个红点是好的。真是一个很无语的bug啊
FUCK YOU MONEY
然后我就只能去跟这个bug,看看在3d视图显示上是啥样的,看了后发现,哈,真圆,圆的不能再圆了。

这里是模拟器上的图片,是没有问题的。真机上才会有。
这里是模拟器上的图片,是没有问题的。真机上才会有。

此处略去找问题的艰辛…(10000字)
最后经过我的不懈努力,终于找到问题解决的办法

button.redDotView.center = CGPointMake(nearbyint(CGRectGetMaxX(button.titleLabel.frame)), CONTENT_PIXEL(65));

在设置红点的center的时候取整一下,就解决了
想想原因应该是苹果本身屏幕分辨率的问题
以后再遇到这类问题也算是有一个解决方案了

下面是自定义的一个公共类视图


#import "CETCHomeButton.h"

@implementation CETCHomeButton

- (void)setSelected:(BOOL)selected{
    [super setSelected:selected];
    if (selected) {
        self.backgroundColor = [UIColor groupTableViewBackgroundColor];
    }else{
        self.backgroundColor = [UIColor whiteColor];
    }
}

- (void)setHighlighted:(BOOL)highlighted{
    [super setHighlighted:highlighted];
    [self setSelected:highlighted];
}

- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor whiteColor];

    }
    return self;
}

- (UIImageView *)imageView{
    if (!_imageView) {
        _imageView = [[UIImageView alloc]init];
        _imageView.contentMode = UIViewContentModeScaleAspectFit;
        [self addSubview:_imageView];
    }
    return _imageView;
}

- (UIImageView *)bgImageView{
    if (!_bgImageView) {
        _bgImageView = [[UIImageView alloc]init];
        [_bgImageView sendSubviewToBack:self];
        [self addSubview:_bgImageView];
    }
    return _bgImageView;
}

- (UILabel *)titleLabel{
    if (!_titleLabel) {
        _titleLabel = [[UILabel alloc]init];
        _titleLabel.textColor = CETC_GRAY_COLOR;
        _titleLabel.font = FONT_WITH_SIZE(15);
        _titleLabel.textAlignment = NSTextAlignmentCenter;
        [self addSubview:_titleLabel];
    }
    return _titleLabel;
}

- (UILabel *)detailLabel{
    if (!_detailLabel) {
        _detailLabel = [[UILabel alloc]init];
        _detailLabel.textColor = CETC_LIGHT_GRAY_COLOR;
        _detailLabel.font = FONT_WITH_SIZE(CONTENT_PIXEL(7));
        _detailLabel.textAlignment = NSTextAlignmentCenter;
        [self addSubview:_detailLabel];
    }
    return _detailLabel;
}

- (UIView *)redDotView{
    if (!_redDotView) {
        _redDotView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 8, 8)];
//      _redDotView.layer.masksToBounds = YES;
        _redDotView.layer.cornerRadius = 4.f;
        _redDotView.backgroundColor = CETC_RED_COLOR;
        [self bringSubviewToFront:_redDotView];
        [self addSubview:_redDotView];
    }
    return _redDotView;
}

下面是调用的

for (NSInteger i = 0; i < buttonList.count; i ++) {
        CETCHomeButton *button = [[CETCHomeButton alloc]initWithFrame:CGRectMake((buttonW + 1)* i, 0, buttonW, cellHeight)];
        button.tag = 101 + i;
        [button addTarget:self action:@selector(buttonsAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.contentView addSubview:button];

        button.imageView.frame = CGRectMake(buttonW/2 - CONTENT_PIXEL(17), CONTENT_PIXEL(20), CONTENT_PIXEL(34), CONTENT_PIXEL(34));
        button.titleLabel.frame = CGRectMake(0, CONTENT_PIXEL(65), buttonW, CONTENT_PIXEL(15));
        button.detailLabel.frame = CGRectMake(0, CONTENT_PIXEL(85), buttonW, CONTENT_PIXEL(15));
        button.detailLabel.font = FONT_WITH_SIZE(CONTENT_PIXEL(9));
        button.detailLabel.adjustsFontSizeToFitWidth = YES;
        button.titleLabel.font = FONT_WITH_SIZE(CONTENT_PIXEL(15));

        NSDictionary *buttonDict = buttonList[i];
        button.imageView.image = [UIImage imageNamed:buttonDict[@"image"]];
        button.titleLabel.text = buttonDict[@"title"];
        button.detailLabel.text = buttonDict[@"detail"];

        [button.titleLabel sizeToFit];
        button.titleLabel.centerX = buttonW/2;


        button.redDotView.center = CGPointMake(nearbyint(CGRectGetMaxX(button.titleLabel.frame)), CONTENT_PIXEL(65));
        button.redDotView.hidden = YES;

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值