ios CCRectangleBlock.m

objectivec 复制代码
//
//  RectangleBlock.h
//  PhoneManager
//
//


#import <UIKit/UIKit.h>




@interface CCRectangleBlock : UIView {
    NSUInteger blocksNumber;
    NSArray *blocksPercentage;
    NSArray *blocksColor;
}
@property(nonatomic, retain) NSArray *blocksPercentage;
@property(nonatomic, retain) NSArray *blocksColor;


- (void)setBlocksAndColors:(NSUInteger)number blocks:(NSArray*)percentage colors:(NSArray*)color;


@end




@interface Battery : UIView{
@private
    CCRectangleBlock *level;
    UIView *head;
    
    UILabel *percentage;
}
@property(nonatomic, retain) CCRectangleBlock *level;
@property(nonatomic, retain) UIView *head;
@property(nonatomic, retain) UILabel *percentage;


@end
objectivec 复制代码
//
//  RectangleBlock.m
//  PhoneManager
//


#import "CCRectangleBlock.h"
#import "CCSystem.h"




@implementation CCRectangleBlock
@synthesize blocksPercentage, blocksColor;


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
//        self.backgroundColor = [UIColor redColor];
    }
    return self;
}


- (void)setBlocksAndColors:(NSUInteger)number blocks:(NSArray*)percentage colors:(NSArray*)color
{
    NSAssert(number == [percentage count] && number == [color count], @"error");
    blocksNumber = number;
    self.blocksPercentage = percentage;
    self.blocksColor = color;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 200, 200, 100, 0.5);
//    self.backgroundColor = [UIColor grayColor];
//    NSLog(@"frame: %@, bounds: %@", NSStringFromCGRect([self frame]), NSStringFromCGRect([self bounds]));
//    CGContextFillRect(context, CGRectOffset([self frame], -20, -10));
    CGContextFillRect(context, [self bounds]);
    CGFloat totalWidth = self.frame.size.width;
    CGFloat totalHeight = self.frame.size.height;
    CGFloat startPoint = 0;
    for (NSUInteger i = 0; i != blocksNumber; ++i) {
        UIColor *color = [blocksColor objectAtIndex:i];
        const CGFloat *colorComponents = CGColorGetComponents([color CGColor]);
        CGFloat blockWidth = totalWidth * [[blocksPercentage objectAtIndex:i] floatValue];
        CGContextSetRGBFillColor(context, colorComponents[0], colorComponents[1], colorComponents [2], colorComponents[3]);
        CGContextFillRect(context, CGRectMake(startPoint, 0, blockWidth, totalHeight));
        startPoint += blockWidth;
    }
    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
    CGContextStrokeRect(context, [self bounds]);
//    CGContextStrokeRect(context, CGRectOffset([self frame], -20, -10));
//    CGContextStrokePath(context);
}




- (void)dealloc
{
    [blocksColor release];
    [blocksPercentage release];
    [super dealloc];
}


@end


@implementation Battery
@synthesize level;
@synthesize head;
@synthesize percentage;
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.backgroundColor = [UIColor clearColor];
        level = [[CCRectangleBlock alloc] initWithFrame:CGRectMake(0, 0, frame.size.width * 0.95, frame.size.height)];
        head = [[UIView alloc] initWithFrame:CGRectMake(frame.size.width * 0.95 + 1, frame.size.height * 0.35, frame.size.width * 0.05 - 1, frame.size.height * 0.3)];
        self.level.backgroundColor = [UIColor grayColor];
        self.head.backgroundColor = [UIColor grayColor];
        float volume = getBatteryLevel();
        [level setBlocksAndColors:1 blocks:[NSArray arrayWithObjects:[NSNumber numberWithFloat:volume], nil] colors:[NSArray arrayWithObjects:[UIColor greenColor], nil]];
        NSLog(@"battery monitoring enabled: %d, volume is: %f", [[UIDevice currentDevice]isBatteryMonitoringEnabled], volume);
        
        volume = getBatteryLevel();
        
        percentage = [[UILabel alloc] initWithFrame:CGRectZero];
        percentage.center = [self center];
        percentage.frame = CGRectMake(self.bounds.size.width / 4, 10, self.bounds.size.width / 2, self.bounds.size.height - 20);
//        percentage.opaque = NO;
        percentage.textAlignment = UITextAlignmentCenter;
        percentage.backgroundColor = [UIColor clearColor];
        percentage.text = [NSString stringWithFormat:@"%d%%", [[NSNumber numberWithFloat:100 * volume] intValue]];
        [self addSubview:level];
        [self addSubview:head];
        [self insertSubview:percentage atIndex:1];
        
        [level release];
        [head release];
        [percentage release];
        
    }
    return self;
}


- (void)drawRect:(CGRect)rect
{
    
    
//    [level drawRect:rect];
}
//- (void)batteryLevelDidChange:(NSNotification*) notification
//{
//    float volume = getBatteryLevel();
//    [level setBlocksAndColors:1 blocks:[NSArray arrayWithObjects:[NSNumber numberWithFloat:volume], nil] colors:[NSArray arrayWithObjects:[UIColor greenColor], nil]];
//    NSLog(@"battery monitoring enabled: %d, volume is: %f", [[UIDevice currentDevice]isBatteryMonitoringEnabled], volume);
//    percentage.text = [NSString stringWithFormat:@"%d%%", [[NSNumber numberWithFloat:volume] intValue]];
//    [self setNeedsDisplay];
//}


- (void)dealloc
{
    [level release];
    [head release];
    [super dealloc];
}


@end

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关推荐
️ 邪神5 分钟前
【Android、IOS、Flutter、鸿蒙、ReactNative 】自定义View
flutter·ios·鸿蒙·reactnative·anroid
比格丽巴格丽抱12 小时前
flutter项目苹果编译运行打包上线
flutter·ios
网络安全-老纪13 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
1024小神15 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
lzhdim17 小时前
iPhone 17 Air看点汇总:薄至6mm 刷新苹果轻薄纪录
ios·iphone
安和昂17 小时前
【iOS】知乎日报第四周总结
ios
麦田里的守望者江19 小时前
KMP 中的 expect 和 actual 声明
android·ios·kotlin
_黎明21 小时前
【Swift】字符串和字符
开发语言·ios·swift
ZVAyIVqt0UFji1 天前
iOS屏幕共享技术实践
macos·ios·objective-c·cocoa
hfxns_1 天前
iOS 18.2 Beta 4开发者预览版发布,相机新增辅助功能
ios