博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中的字符串扫描类NSScanner
阅读量:6406 次
发布时间:2019-06-23

本文共 3962 字,大约阅读时间需要 13 分钟。

新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置。UIColor+Hex.h文件,#import 
#define RGBA_COLOR(R, G, B, A) [UIColor colorWithRed:((R) / 255.0f) green:((G) / 255.0f) blue:((B) / 255.0f) alpha:A]#define RGB_COLOR(R, G, B) [UIColor colorWithRed:((R) / 255.0f) green:((G) / 255.0f) blue:((B) / 255.0f) alpha:1.0f]@interface UIColor (Hex)+ (UIColor *)colorWithHexString:(NSString *)color;//从十六进制字符串获取颜色,//color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;@end上面的代码在开头是两个宏定义,就是对[UIColor colorWithRed:green:blue:alpha]方法的简化,在UIColor(Hex)中声明两个方法-colorWithHexString和-colorWithHexString:alpha,这个很好理解。UIColor+Hex.m文件#import "UIColor+Hex.h"@implementation UIColor (Hex)+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha{ //删除字符串中的空格 NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; // String should be 6 or 8 characters if ([cString length] < 6) { return [UIColor clearColor]; } // strip 0X if it appears //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾 if ([cString hasPrefix:@"0X"]) { cString = [cString substringFromIndex:2]; } //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾 if ([cString hasPrefix:@"#"]) { cString = [cString substringFromIndex:1]; } if ([cString length] != 6) { return [UIColor clearColor]; } // Separate into r, g, b substrings NSRange range; range.location = 0; range.length = 2; //r NSString *rString = [cString substringWithRange:range]; //g range.location = 2; NSString *gString = [cString substringWithRange:range]; //b range.location = 4; NSString *bString = [cString substringWithRange:range]; // Scan values unsigned int r, g, b; [[NSScanner scannerWithString:rString] scanHexInt:&r]; [[NSScanner scannerWithString:gString] scanHexInt:&g]; [[NSScanner scannerWithString:bString] scanHexInt:&b]; return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:alpha];}//默认alpha值为1+ (UIColor *)colorWithHexString:(NSString *)color{ return [self colorWithHexString:color alpha:1.0f];}@end这样就扩展了UIColor,支持十六进制颜色设置。下面举个栗子,设置UIButton一些颜色特征,来说明该扩展的使用,#import "UIColor+Hex.h"//省略多余的代码//设置导航栏右侧的BarButtonItem为Button- (void)setupNavigationItem{ UIView *rightView = [[UIView alloc] init]; rightView.bounds = CGRectMake(0, 0, 52, 44); UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; rightButton.frame = CGRectMake(-6, 0, 52, 44); rightButton.backgroundImageEdgeInsets = UIEdgeInsetsMake(7, 0, 7, 0); //kSetting是国际化的字符串"设置" [rightButton setTitle:NVSLocalizedString(@"kSetting", nil) forState:UIControlStateNormal]; //使用宏定义的RGB_COLOR// [rightButton setTitleColor:RGB_COLOR(160, 170, 150) forState:UIControlStateHighlighted]; //使用UIColor+Hex扩展 [rightButton setTitleColor:[UIColor colorWithHexString:@"#708c3b"] forState:UIControlStateNormal]; rightButton.titleLabel.font = [UIFont fontWithName:@"Heiti SC" size:12.f]; [rightButton setBackgroundImage:[UIImage imageNamed:@"device_setting_bg"] forState:UIControlStateNormal]; [rightButton setBackgroundImage:[UIImage imageNamed:@"device_setting_bg_press"] forState:UIControlStateHighlighted]; [rightButton addTarget:self action:@selector(settingBtnPresss:) forControlEvents:UIControlEventTouchUpInside]; [rightView addSubview:rightButton]; UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightView]; [self.navigationItem setRightBarButtonItem:rightBarButtonItem animated:YES]; [rightBarButtonItem release]; [rightView release];}恩,使用差不多就这么简单,总结一下,本篇博客主要有以下几个细节或者说知识点,(1)宏定义RGB_COLOR和RGBA_COLOR可以设置颜色(2)UIColor+Hex扩展可以设置颜色(3)导航栏上面的BarButtonItem怎么设置为Button(4)Button一些常用和不常用的属性设置

 

转载地址:http://qyxea.baihongyu.com/

你可能感兴趣的文章
iOS key value coding kvc在接收json数据与 model封装中的使用
查看>>
Android 滑动效果入门篇(二)—— Gallery
查看>>
Revit二次开发示例:DesignOptions
查看>>
Entity Framework 系统约定配置
查看>>
优秀设计:纹理在网页设计中的20个应用示例
查看>>
C++ 关键字 explicit, export, mutable
查看>>
生成指定范围的一组随机数并求平均值
查看>>
android语音识别方法
查看>>
File Operations in Android NDK(转)
查看>>
如何将kux格式的视频转换成我们常用的MP4格式
查看>>
[sublime系列文章] sublime text 3插件配置说明
查看>>
学习 PixiJS — 碰撞检测
查看>>
Vue 基础篇
查看>>
JavaScript:函数防抖与函数节流
查看>>
关于区间贪心的补全
查看>>
架构设计步骤
查看>>
自定义元素探秘及构建可复用组件最佳实践
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
Jenkins 用户文档(目录)
查看>>
系统常见指标
查看>>