一些個人學習的的小總結,純基礎
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;
}