BlueBadge

本文介绍了一个自定义的iOS视图组件——蓝徽章(BlueBadge),该组件继承自UIView,用于显示一个带有计数的圆形徽章。文章详细阐述了如何初始化组件并设置背景为透明,以及如何通过drawRect方法绘制圆形徽章及其内部的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <UIKit/UIKit.h>

@interface BlueBadge : UIView {

NSInteger count;

}

@property (nonatomic) NSInteger count;

- (void)drawWithCount:(NSInteger)i;

@end

#import "BlueBadge.h"

@implementation BlueBadge

@synthesize count;

- (id)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame]) {

// Initialization code

[self setBackgroundColor: [UIColor clearColor]];

[self setCount: 0];

}

return self;

}

- (void)drawRect:(CGRect)rect {

if (count == 0) return;

NSString *countString = [NSString stringWithFormat: @"%d", count];

UIFont *font = [UIFont boldSystemFontOfSize: 16];

CGSize numberSize = [countString sizeWithFont: font];

CGContextRef context = UIGraphicsGetCurrentContext();

float radius = numberSize.height / 2.0;

float startPoint = (rect.size.width - (numberSize.width + numberSize.height))/2.0;

CGContextSetRGBFillColor(context, 0.55, 0.6, 0.70, 1.0);

CGContextBeginPath(context);

CGContextAddArc(context, startPoint + radius, radius, radius, M_PI / 2 , 3 * M_PI / 2, NO);

CGContextAddArc(context, startPoint + radius + numberSize.width, radius, radius, 3 * M_PI / 2, M_PI / 2, NO);

CGContextClosePath(context);

CGContextFillPath(context);

[[UIColor whiteColor] set];

[countString drawInRect: CGRectMake(startPoint + radius, rect.origin.y, rect.size.width, rect.size.height) withFont: font];

}

- (void)drawWithCount:(NSInteger)i {

self.count = i;

[self setNeedsDisplay];

}

- (void)dealloc {

[super dealloc];

}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值