一些个人学习的的小总结,纯基础
1、 一个判断字符串是否为空的判断
- (BOOL)judgeString:(NSString *)str
{
if (str==nil || [str isEqualToString:@""] || [str isEqualToString:@"(null)"] || [str isEqualToString:@"null"] || [str isKindOfClass:[NSNull class]]){
return NO;
}
return YES;
}
这个方法基本上把空字符串的全部情况都考虑到了,喜欢的小伙伴可以用一下。
2、有时侯我们需要在一个label里面显示出不同的字号,或者不同的颜色,或者是不同颜色不同字号同时出现。这也就用到了attributeString
两个方法配合使用,基本上就剋一解决了 。
//<span style="font-family: Menlo; font-size: 14px;">(1)颜色方案 </span>处理字符串,前后颜色不一样,index代表前半部分的长度
-(NSMutableAttributedString *)setString:(NSString *)string withFrontColor:(NSString *)fString breakAtIndex:(NSInteger)index andBackColor:(NSString *)bString
{
//容错
if (fString.length<6) {
fString = @"000000";
}
if (bString.length <6) {
bString = @"000000";
}
NSMutableAttributedString *attributeStr=[[NSMutableAttributedString alloc]initWithString:string];
if (attributeStr.length<1) {
return attributeStr;
}
if (index<1 || index >string.length) {
return attributeStr;
}
//改变颜色
[attributeStr addAttribute:NSForegroundColorAttributeName value:[Utilities colorWithHexString:fString] range:NSMakeRange(0,index)];
[attributeStr addAttribute:NSForegroundColorAttributeName value:[Utilities colorWithHexString:bString] range:NSMakeRange(index,string.length-index)];
return attributeStr;
}
//(2) 字号处理 处理字符串,前后字号不一样,index代表前半部分的长度
-(NSMutableAttributedString *)setString:(NSMutableAttributedString *)attributeStr withFrontFont:(NSInteger)fFont breakAtIndex:(NSInteger)index andBackFont:(NSInteger)bFont
{
//容错
if (attributeStr.length<1) {
return attributeStr;
}
if (index <1 || index>attributeStr.length) {
return attributeStr;
}
//改变字号
[attributeStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:fFont] range:NSMakeRange(0,index)];
[attributeStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:bFont] range:NSMakeRange(index,attributeStr.length-index)];
return attributeStr;
}
方法是我自己定义的,小伙伴们 可以根据自己需求,进一步优化,比如返回类型、输入字符串的类型。
上面方法中的utilities是我的一个帮助类,所用的是设置颜色的一个方法,很多小伙伴也应该用过,如果没有这样的 帮助类,那就把颜色字符串 直接换成UIColor好了。
NSAttributedString 里面有很多类似于 NSFontAttributeName 的处理字符串的属性,大家可以command+点进试一下,此处不在赘述。
3 、去掉某个字符,这里就去掉一下空格
//去掉空格
- (NSString *)updating:(NSString *)string
{
NSString * noSpaceString = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
if (![self judgeString:noSpaceString]) {
string = @"这个字符串全是空格";
}
return string;
}
4 、 根据某个字符进行分割分组
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
[tempArray </span>addObjectsFromArray:[toHandelString componentsSeparatedByString:@","]];
这样就把字符串根据“,”分隔开来了。我们也可以根据需求使用字符串里面别的字符进行分割
5. 图文混排 适用于UILabel,textView,Textfield 等可设置attributeString 的控件
- (NSMutableAttributedString *)handelString:(NSString *)string addImage:(UIImage *)image imageSize:(CGSize)size atIndex:(NSInteger)index {
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc]initWithString:string];
if (index<0) {
index = 0;
}
if (index>attString.length) {
index = attString.length;
}
CGFloat width = 0.f;
CGFloat height = 0.f;
if (size.width > 0 && size.height > 0) {
width = size.width;
height = size.height;
}
//附件
NSTextAttachment *attachment = [[NSTextAttachment alloc]init];
attachment.bounds = CGRectMake(0, 0, width, height);
attachment.image = image;
//转string
NSAttributedString * attachStr = [NSAttributedString attributedStringWithAttachment:attachment];
//插入需求的位置
[attString insertAttributedString:attachStr atIndex:index];
return attString;
}