iOS开发常用代码块(-)

来源:互联网 发布:apache 错误日志 编辑:程序博客网 时间:2024/05/29 16:54

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

复制代码
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(@"\t|- %@",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\n%f\n%f\n%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];            }        }    }}
复制代码
0 0