iOS開發常用代碼塊,ios開發

來源:互聯網
上載者:User

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(@"\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.