设置角标按钮iOS

通过设置属性值来 设置按钮角标,继承系统按钮。 下边简单设置性能不好,造成离屏渲染,消耗性能。

-(void)setBadgeString:(NSString *)badgeString{

_badgeString = badgeString;

self.badgeLabel = [self viewWithTag:77];

if (self.badgeString && ![self.badgeString isEqualToString:@"0"]) {

if (self.badgeLabel) {

[self.badgeLabel removeFromSuperview];

}

UILabel *lab = [[UILabel alloc]init];

lab.bounds = CGRectMake(0, 0, 16, 16);

lab.backgroundColor = [UIColor redColor];

lab.tag = 77;

lab.layer.masksToBounds = YES;

lab.layer.cornerRadius = 8;

lab.textColor = [UIColor whiteColor];

lab.textAlignment = NSTextAlignmentCenter;

lab.font = [UIFont systemFontOfSize:10];

[self addSubview:lab];

self.badgeLabel = lab;

self.badgeLabel.text = badgeString;

}else{

self.badgeLabel.hidden = YES;

}

}

本来以为最好使用UIBezierPath和CAShapeLayer来设置圆角,这样性能最高:

谁知道这样,界面上并不能显示出想要的结果。。。。

用addSublayer方式时候label上的字被挡住了;用lab.layer.mask = maskLayer;时候,边框却不显示出来

经某人点化,说我没必要这么搞。还不如最初的方式;但是我还是有些搞不太明白。。。希望有经验的大神给予指导。持续更新中。。。。。。。

你可能感兴趣的:(设置角标按钮iOS)