值得收藏的iOS開發常用代碼塊_IOS

來源:互聯網
上載者:User

遍曆可變數組的同時刪除數組元素

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];      }    }  }}

小夥伴們,今天就分享到這裡,下期更精彩!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.