Welcome

首页 / 移动开发 / IOS / 值得收藏的iOS开发常用代码块

遍历可变数组的同时删除数组元素

NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array];NSString *str1 = @“zhangsan”; for (AddressPerson *perName in copyArray) { if ([[perName name] isEqualToString:str1]) { [array removeObject:perName]; } } 
获取系统当前语言

NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];NSLog(@"currentlanguage = %@",currentLanguage);if ([currentLanguage containsString:@"zh-Hans"]) {NSLog(@"zh-Hans简体中文");}else if ([currentLanguage containsString:@"zh-Hant"]) {NSLog(@"zh-Hant繁体中文");}
UITableView的Group样式下顶部空白处理

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)];self.tableView.tableHeaderView = view;
UITableView的plain样式下,取消区头停滞效果

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{CGFloat sectionHeaderHeight = sectionHead.height;if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView;.contentOffset.y>=0){scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);}else if(scrollView.contentOffset.y>=sectionHeaderHeight){scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);}}
获取某个view所在的控制器

- (UIViewController *)viewController{ UIViewController *viewController = nil;UIResponder *next = self.nextResponder; while (next) {if ([next isKindOfClass:[UIViewController class]]){ viewController = (UIViewController *)next;break;}next = next.nextResponder;} return viewController;}
 两种方法删除NSUserDefaults所有记录

//方法一NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];//方法二- (void)resetDefaults{NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];NSDictionary * dict = [defs dictionaryRepresentation];for (id key in dict){[defs removeObjectForKey:key];}[defs synchronize];}
 打印系统所有已注册的字体名称

void enumerateFonts(){for(NSString *familyName in [UIFont familyNames]){NSLog(@"%@",familyName);NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];for(NSString *fontName in fontNames){NSLog(@"	|- %@",fontName);}}}
获取图片某一点的颜色

- (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image{UIColor* color = nil;CGImageRef inImage = image.CGImage;CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];if (cgctx == NULL) {return nil; /* error */}size_t w = CGImageGetWidth(inImage);size_t h = CGImageGetHeight(inImage);CGRect rect = {{0,0},{w,h}};CGContextDrawImage(cgctx, rect, inImage);unsigned char* data = CGBitmapContextGetData (cgctx);if (data != NULL) {int offset = 4*((w*round(point.y))+round(point.x));int alpha = data[offset];int red = data[offset+1];int green = data[offset+2];int blue = data[offset+3];color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue: (blue/255.0f) alpha:(alpha/255.0f)];}CGContextRelease(cgctx);if (data) {free(data);}return color;}
字符串反转

//第一种:- (NSString *)reverseWordsInString:(NSString *)str{NSMutableString *newString = [[NSMutableString alloc] initWithCapacity:str.length];for (NSInteger i = str.length - 1; i >= 0 ; i --){unichar ch = [str characterAtIndex:i];[newString appendFormat:@"%c", ch];} return newString;}//第二种:- (NSString*)reverseWordsInString:(NSString*)str{ NSMutableString *reverString = [NSMutableString stringWithCapacity:str.length]; [str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {[reverString appendString:substring];}]; return reverString;}
禁止锁屏

//第一种[UIApplication sharedApplication].idleTimerDisabled = YES;//第二种[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
 模态推出透明界面

UIViewController *vc = [[UIViewController alloc] init];UINavigationController *na = [[UINavigationController alloc] initWithRootViewController:vc];if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){ na.modalPresentationStyle = UIModalPresentationOverCurrentContext;}else{ self.modalPresentationStyle=UIModalPresentationCurrentContext;}[self presentViewController:na animated:YES completion:nil];
iOS跳转到App Store下载应用评分

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APPID"]];
 手动更改iOS状态栏的颜色

- (void)setStatusBarBackgroundColor:(UIColor *)color{UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]){statusBar.backgroundColor = color;}}
判断当前ViewController是push还是present的方式显示

NSArray *viewcontrollers=self.navigationController.viewControllers;if (viewcontrollers.count > 1){if ([viewcontrollers objectAtIndex:viewcontrollers.count - 1] == self){//push方式[self.navigationController popViewControllerAnimated:YES];}}else{//present方式[self dismissViewControllerAnimated:YES completion:nil];}
 获取实际使用的LaunchImage图片

- (NSString *)getLaunchImageName{CGSize viewSize = self.window.bounds.size;// 竖屏NSString *viewOrientation = @"Portrait"; NSString *launchImageName = nil;NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];for (NSDictionary* dict in imagesDict){CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]]){launchImageName = dict[@"UILaunchImageName"];}}return launchImageName;}
iOS在当前屏幕获取第一响应

UIWindow * keyWindow = [[UIApplication sharedApplication] keyWindow];UIView * firstResponder = [keyWindow performSelector:@selector(firstResponder)];
 判断对象是否遵循了某协议

if ([self.selectedController conformsToProtocol:@protocol(RefreshPtotocol)]){ [self.selectedController performSelector:@selector(onTriggerRefresh)];}
 判断view是不是指定视图的子视图
BOOL isView = [textView isDescendantOfView:self.view]; 
NSArray 快速求总和 最大值 最小值 和 平均值

NSArray *array = [NSArray arrayWithObjects:@"2.0", @"2.3", @"3.0", @"4.0", @"10", nil];CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];NSLog(@"%f
%f
%f
%f",sum,avg,max,min);
 修改UITextField中Placeholder的文字颜色
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; 
获取一个类的所有子类

+ (NSArray *) allSubclasses{Class myClass = [self class];NSMutableArray *mySubclasses = [NSMutableArray array];unsigned int numOfClasses;Class *classes = objc_copyClassList(&numOfClasses;);for (unsigned int ci = 0; ci < numOfClasses; ci++){Class superClass = classes[ci];do{superClass = class_getSuperclass(superClass);} while (superClass && superClass != myClass);if (superClass){[mySubclasses addObject: classes[ci]];}}free(classes);return mySubclasses;}
阿拉伯数字转中文格式

+(NSString *)translation:(NSString *)arebic{ NSString *str = arebic;NSArray *arabic_numerals = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0"];NSArray *chinese_numerals = @[@"一",@"二",@"三",@"四",@"五",@"六",@"七",@"八",@"九",@"零"];NSArray *digits = @[@"个",@"十",@"百",@"千",@"万",@"十",@"百",@"千",@"亿",@"十",@"百",@"千",@"兆"];NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chinese_numerals forKeys:arabic_numerals];NSMutableArray *sums = [NSMutableArray array];for (int i = 0; i < str.length; i ++) {NSString *substr = [str substringWithRange:NSMakeRange(i, 1)];NSString *a = [dictionary objectForKey:substr];NSString *b = digits[str.length -i-1];NSString *sum = [a stringByAppendingString:b];if ([a isEqualToString:chinese_numerals[9]]){if([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]]){sum = b;if ([[sums lastObject] isEqualToString:chinese_numerals[9]]){[sums removeLastObject];}}else{sum = chinese_numerals[9];}if ([[sums lastObject] isEqualToString:sum]){continue;}}[sums addObject:sum];}NSString *sumStr = [sums componentsJoinedByString:@""];NSString *chinese = [sumStr substringToIndex:sumStr.length-1];NSLog(@"%@",str);NSLog(@"%@",chinese);return chinese;}
 取消UICollectionView的隐式动画

//方法一[UIView performWithoutAnimation:^{[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];}];//方法二[UIView animateWithDuration:0 animations:^{[collectionView performBatchUpdates:^{[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];} completion:nil];}];//方法三[UIView setAnimationsEnabled:NO];[self.trackPanel performBatchUpdates:^{[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];} completion:^(BOOL finished) {[UIView setAnimationsEnabled:YES];}];
判断邮箱格式是否正确的代码

-(BOOL)isValidateEmail:(NSString *)email  {  NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";  NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex];  return [emailTest evaluateWithObject:email];  }
iOS中UITextField的字数限制

//在viewDidLoad中注册<UITextFieldTextDidChangeNotification>通知[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)name:@"UITextFieldTextDidChangeNotification" object:myTextField];//实现监听方法#pragma mark - Notification Method-(void)textFieldEditChanged:(NSNotification *)obj{UITextField *textField = (UITextField *)obj.object;NSString *toBeString = textField.text;//获取高亮部分UITextRange *selectedRange = [textField markedTextRange];UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];// 没有高亮选择的字,则对已输入的文字进行字数统计和限制if (!position){if (toBeString.length > MAX_STARWORDS_LENGTH){NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];if (rangeIndex.length == 1){textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];}else{NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];textField.text = [toBeString substringWithRange:rangeRange];}}}}
小伙伴们,今天就分享到这里,下期更精彩!