iOS/SWIFT开发常用的代码

iOS开发常用的代码

 

%c 一个单一的字符

%d 一个十进制整数

%i 一个整数

%e, %f, %g 一个浮点数

%o 一个八进制数

%s 一个字符串

%x 一个十六进制数

%p 一个指针

%n 一个等于读取字符数量的整数

%u 一个无符号整数

%[] 一个字符集

%% 一个精度符号

 

//一、NSString

   /*----------------创建字符串的方法----------------*/

 

    1、创建常量字符串。

    NSString*astring = @"This is a String!";

 

    2、创建空字符串,给予赋值。

    NSString*astring = [[NSString alloc] init];

    astring =@"This is a String!";

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

    3、在以上方法中,提升速度:initWithString方法

    NSString*astring = [[NSString alloc] initWithString:@"This is a String!"];

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

    4、用标准c创建字符串:initWithCString方法

    char *Cstring ="This is a String!";

    NSString*astring = [[NSString alloc] initWithCString:Cstring];

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

    5、创建格式化字符串:占位符(由一个%加一个字符组成)

    int i = 1;

    int j = 2;

    NSString*astring = [[NSString alloc]

                       initWithString:[NSString stringWithFormat:@"%d.This is %istring!",i,j]];

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

    6、创建临时字符串

    NSString*astring;

    astring =[NSString stringWithCString:"This is a temporary string"];

   NSLog(@"astring:%@",astring);

 

   /*----------------从文件读取字符串:initWithContentsOfFile方法 ----------------*/

    NSString *path= @"astring.text";

    NSString*astring = [[NSString alloc] initWithContentsOfFile:path];

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

    /*----------------写字符串到文件:writeToFile方法 ----------------*/

    NSString*astring = [[NSString alloc] initWithString:@"This is a String!"];

   NSLog(@"astring:%@",astring);

    NSString *path= @"astring.text";

    [astringwriteToFile: path atomically: YES];

    [astringrelease];   

 

   /*---------------- 比较两个字符串----------------*/

    用C比较:strcmp函数

    char string1[]= "string!";

    char string2[]= "string!";

   if(strcmp(string1, string2) = = 0)

    {

       NSLog(@"1");

    }

 

    isEqualToString方法

    NSString*astring01 = @"This is a String!";

    NSString*astring02 = @"This is a String!";

    BOOL result =[astring01 isEqualToString:astring02];

   NSLog(@"result:%d",result);

 

    compare方法(comparer返回的三种值)

    NSString*astring01 = @"This is a String!";

    NSString*astring02 = @"This is a String!";

    BOOL result =[astring01 compare:astring02] = = NSOrderedSame;

   NSLog(@"result:%d",result);

    NSOrderedSame 判断两者内容是否相同

 

    NSString*astring01 = @"This is a String!";

    NSString*astring02 = @"this is a String!";

    BOOL result =[astring01 compare:astring02] = = NSOrderedAscending;

   NSLog(@"result:%d",result);

   //NSOrderedAscending 判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)

 

    NSString*astring01 = @"this is a String!";

    NSString*astring02 = @"This is a String!";

    BOOL result =[astring01 compare:astring02] = = NSOrderedDescending;

   NSLog(@"result:%d",result);

   //NSOrderedDescending 判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)

 

    不考虑大 小写比较字符串1

    NSString*astring01 = @"this is a String!";

    NSString*astring02 = @"This is a String!";

    BOOL result =[astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;

   NSLog(@"result:%d",result);

   //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为 真)

 

    不考虑大小写比较字符串2

    NSString*astring01 = @"this is a String!";

    NSString*astring02 = @"This is a String!";

    BOOL result =[astring01 compare:astring02

                           options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;

   NSLog(@"result:%d",result);    

 

   //NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写NSNumericSearch:比较字符串的字符个数,而不是字符值。

 

   /*----------------改变字符串的大小写----------------*/

    NSString*string1 = @"A String";

    NSString*string2 = @"String";

   NSLog(@"string1:%@",[string1 uppercaseString]);//大写

   NSLog(@"string2:%@",[string2 lowercaseString]);//小写

   NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小

 

   /*----------------在串中搜索子串 ----------------*/

    NSString*string1 = @"This is a string";

    NSString*string2 = @"string";

    NSRange range =[string1 rangeOfString:string2];

    int location =range.location;

    int leight =range.length;

    NSString*astring = [[NSString alloc]

                       initWithString:[NSStringstringWithFormat:@"Location:%i,Leight:%i"

                       ,location,leight]];

   NSLog(@"astring:%@",astring);

    [astringrelease];

 

   /*----------------抽取子串 ----------------*/

    -substringToIndex:从字符串的开头一直截取到指定的位置,但不包括该位置的字符

    NSString*string1 = @"This is a string";

    NSString*string2 = [string1 substringToIndex:3];

   NSLog(@"string2:%@",string2);

 

   -substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符

    NSString*string1 = @"This is a string";

    NSString*string2 = [string1 substringFromIndex:3];

   NSLog(@"string2:%@",string2);

 

   -substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串

    NSString*string1 = @"This is a string";

    NSString*string2 = [string1 substringWithRange:NSMakeRange(0, 4)];

   NSLog(@"string2:%@",string2);

 

const char *fieldValue = [value  cStringUsingEncoding:NSUTF8StringEncoding];

const char *fieldValue = [value UTF8String];

 

NSString 转NSData

NSString* str= @"kilonet";

NSData* data=[strdataUsingEncoding:NSUTF8StringEncoding];

 

   Date format用法:

  -(NSString *)getDay:(NSDate *) d

{

    NSString *s ;

    NSDateFormatter*format = [[NSDateFormatter alloc] init];

    [formatsetDateFormat:@"YYYY/MM/dd hh:mm:ss"];

    s = [formatstringFromDate:d];

    [formatrelease];

    return s;

}

 

各地时区获取:

 

NSDate *nowDate = [NSDate new];

    NSDateFormatter*formatter    =  [[NSDateFormatter alloc] init];

    [formatter    setDateFormat:@"yyyy/MM/ddHH:mm:ss"];

    //    根据时区名字获取当前时间,如果该时区不存在,默认获取系统当前时区的时间

    //    NSTimeZone* timeZone = [NSTimeZonetimeZoneWithName:@"Europe/Andorra"];

    //    [formatter setTimeZone:timeZone];

    //获取所有的时区名字

    NSArray *array= [NSTimeZone knownTimeZoneNames];

    //    NSLog(@"array:%@",array);

    //for循环

    //    for(int i=0;i<[array count];i++)

    //    {

    //        NSTimeZone* timeZone = [NSTimeZonetimeZoneWithName:[array objectAtIndex:i]];

    //        [formatter setTimeZone:timeZone];

    //        NSString *locationTime = [formatterstringFromDate:nowDate];

    //        NSLog(@"时区名字:%@  : 时区当前时间: %@",[arrayobjectAtIndex:i],locationTime);

    //        //NSLog(@"timezone nameis:%@",[array objectAtIndex:i]);

    //    }

    //快速枚举法

    for(NSString*timeZoneName in array){

        [formattersetTimeZone:[NSTimeZone timeZoneWithName:timeZoneName]];

       NSLog(@"%@,%@",timeZoneName,[formatterstringFromDate:nowDate]);

    }

 

    [formatterrelease];

    [nowDate release];

 

 NSCalendar用法:

 

 -(NSString *)getWeek:(NSDate *) d {

    NSCalendar*calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

    unsigned units= NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit;

   NSDateComponents *components = [calendar components:units fromDate:d];

    [calendarrelease];

 

    switch([components weekday]) {

        case 2:

            return@"Monday";

            break;

        case 3:

            return@"Tuesday";

            break;

        case 4:

            return@"Wednesday";

            break;

        case 5:

           return@"Thursday";

            break;

        case 6:

           return  @"Friday";

            break;

        case 7:

           return  @"Saturday";

            break;

        case 1:

            return@"Sunday";

            break;

        default:

            return@"No Week";

            break;

    }

 

    // 用components,我们可以读取其他更多的数据。

 

}

 

4. 用Get方式读取网络数据:

 

将网络数读取为字符串

- (NSString *) getDataByURL:(NSString *) url {

    return[[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURLURLWithString:[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]encoding:NSUTF8StringEncoding];

}

 

//读取网络图片

- (UIImage *) getImageByURL:(NSString *) url {

    return[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURLURLWithString:[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]];

}

 

多线程

[NSThread detachNewThreadSelector:@selector(scheduleTask)toTarget:self withObject:nil];

 

-(void) scheduleTask {

    //create a pool

   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

 

    //release thepool;

    [pool release];

}

 

//如果有参数,则这么使用:

[NSThreaddetachNewThreadSelector:@selector(scheduleTask:) toTarget:selfwithObject:[NSDate date]];

 

-(void) scheduleTask:(NSDate *) mdate {

    //create a pool

   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

 

    //release thepool;

    [pool release];

}

 

//注意selector里有冒号。

    //在线程里运行主线程里的方法

 

    [selfperformSelectorOnMainThread:@selector(moveToMain) withObject:nilwaitUntilDone:FALSE];

 

6. 定时器NSTimer用法:

 

代码

  // 一个可以自动关闭的Alert窗口

 

    UIAlertView*alert = [[UIAlertView alloc] initWithTitle:nil

                                                    message:[@"一个可以自动关闭的Alert窗口"

                                                  delegate:nil

                                         cancelButtonTitle:nil //NSLocalizedString(@"OK",@"OK")   //取消任何按钮

                                         otherButtonTitles:nil];

    //[alertsetBounds:CGRectMake

     (alert.bounds.origin.x, alert.bounds.origin.y,

     alert.bounds.size.width, alert.bounds.size.height+30.0)];

    [alert show];

 

   UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

 

    // Adjust theindicator so it is up a few pixels from the bottom of the alert

   indicator.center = CGPointMake(alert.bounds.size.width/2,  alert.bounds.size.height-40.0);

    [indicatorstartAnimating];

    [alertinsertSubview:indicator atIndex:0];

    [indicatorrelease];

 

    [NSTimerscheduledTimerWithTimeInterval:3.0f

                                    target:self

                                  selector:@selector(dismissAlert:)

                                  userInfo:[NSDictionary dictionaryWithObjectsAndKeys:alert,

                  @"alert", @"testing ", @"key" ,nil]  //如果不用传递参数,那么可以将此项设置为nil.

                                    repeats:NO];

 

   NSLog(@"release alert");

    [alertrelease];

 

-(void) dismissAlert:(NSTimer *)timer{

 

   NSLog(@"release timer");

    NSLog([[timeruserInfo] objectForKey:@"key"]);

 

    UIAlertView*alert = [[timer userInfo] objectForKey:@"alert"];

    [alertdismissWithClickedButtonIndex:0 animated:YES];

 

}

 

定时器停止使用:

 

[timer invalidate];

timer = nil;

 

     7. 用户缺省值NSUserDefaults读取:

 

    //得到用户缺省值

    NSUserDefaults*defs = [NSUserDefaults standardUserDefaults];

 

    //在缺省值中找到AppleLanguages, 返回值是一个数组

    NSArray*languages = [defs objectForKey:@"AppleLanguages"];

   NSLog(@"all language语言is %@", languages);

 

    //在得到的数组中的第一个项就是用户的首选语言了

    NSLog(@"首选语言 is %@",[languagesobjectAtIndex:0]); 

 

    //get the language& country code

    NSLocale*currentLocale = [NSLocale currentLocale];

 

   NSLog(@"Language Code is %@", [currentLocaleobjectForKey:NSLocaleLanguageCode]);

   NSLog(@"Country Code is %@", [currentLocaleobjectForKey:NSLocaleCountryCode

 

8. View之间切换的动态效果设置:

 

   SettingsController *settings = [[SettingsControlleralloc]initWithNibName:@"SettingsView" bundle:nil];

   settings.modalTransitionStyle =UIModalTransitionStyleFlipHorizontal;  //水平翻转

    [selfpresentModalViewController:settings animated:YES];

    [settingsrelease];

 

9.NSScrollView 滑动用法:

 

-(void) scrollViewDidScroll:(UIScrollView *)scrollView{

    NSLog(@"正在滑动中...");

}

 

//用户直接滑动NSScrollView,可以看到滑动条

-(void) scrollViewDidEndDecelerating:(UIScrollView*)scrollView {

 

}

 

// 通过其他控件触发NSScrollView滑动,看不到滑动条

- (void) scrollViewDidEndScrollingAnimation:(UIScrollView*)scrollView {

 

}

 

    11.键盘处理系列

 

 //set theUIKeyboard to switch to a different text field when you press return

 

//switch textField to the name of your textfield

[textField becomeFirstResponder];

 

srandom(time(NULL)); //随机数种子

 

id d = random(); // 随机数

 

   4. iPhone的系统目录:

 

//得到Document目录:

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

 

//得到temp临时目录:

NSString *tempPath = NSTemporaryDirectory();

 

//得到目录上的文件地址:

NSString *文件地址 = [目录地址stringByAppendingPathComponent:@"文件名.扩展名"];

 

 5. 状态栏显示Indicator:

 

[UIApplicationsharedApplication].networkActivityIndicatorVisible = YES;

 

  6.app Icon显示数字:

 

- (void)applicationDidEnterBackground:(UIApplication*)application{

    [[UIApplicationsharedApplication] setApplicationIconBadgeNumber:5];

}

 

   7.sqlite保存地址:

 

代码

    NSArray *paths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString*thePath = [paths objectAtIndex:0];

    NSString*filePath = [thePathstringByAppendingPathComponent:@"kilonet1.sqlite"];

 

    NSString*dbPath = [[[NSBundle mainBundle] resourcePath]

                       stringByAppendingPathComponent:@"kilonet2.sqlite"];

 

   8.Application退出:exit(0);

 

      9. AlertView,ActionSheet的cancelButton点击事件:

 

代码

-(void) actionSheet :(UIActionSheet *) actionSheetdidDismissWithButtonIndex:(NSInteger) buttonIndex {

   NSLog(@"cancel actionSheet........");

    //当用户按下cancel按钮

    if( buttonIndex== [actionSheet cancelButtonIndex]) {

        exit(0);

    }

//    //当用户按下destructive按钮

//    if(buttonIndex == [actionSheet destructiveButtonIndex]) {

//        //DoSomething here.

//    }

}

 

- (void)alertView:(UIAlertView *)alertViewwillDismissWithButtonIndex:(NSInteger)buttonIndex {

    NSLog(@"cancel alertView........");

    if (buttonIndex== [alertView cancelButtonIndex]) {

        exit(0);

    }

}

 

  10.给Window设置全局的背景图片:

window.backgroundColor = [UIColorcolorWithPatternImage:[UIImage imageNamed:@"coolblack.png"]];

 

    11. UITextField文本框显示及对键盘的控制:

 

代码

#pragma mark -

#pragma mark UITextFieldDelegate

//控制键盘跳转

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

 

    if (textField== _txtAccount) {

        if([_txtAccount.text length]==0) {

            returnNO;

        }

       [_txtPassword becomeFirstResponder];

    } else if(textField == _txtPassword) {

       [_txtPassword resignFirstResponder];

    }

 

    return YES;

}

 

//输入框背景更换

-(BOOL) textFieldShouldBeginEditing:(UITextField*)textField{

 

    [textFieldsetBackground:[UIImage imageNamed:@"ctext_field_02.png"]];

 

    return YES;

}

 

-(void) textFieldDidEndEditing:(UITextField *)textField{

    [textFieldsetBackground:[UIImage imageNamed:@"ctext_field_01.png"]];

}

 

12.UITextField文本框前面空白宽度设置以及后面组合按钮设置:

 

代码

    //给文本输入框后面加入空白

   _txtAccount.rightView = _btnDropDown;

   _txtAccount.rightViewMode = UITextFieldViewModeAlways;

 

    //给文本输入框前面加入空白

    CGRect frame =[_txtAccount frame];

   frame.size.width = 5;

    UIView*leftview = [[UIView alloc] initWithFrame:frame];

   _txtAccount.leftViewMode = UITextFieldViewModeAlways;

   _txtAccount.leftView = leftview;

 

  13. UIScrollView 设置滑动不超出本身范围:

 

 [fcScrollViewsetBounces:NO];

 

 14. 在drawRect里画文字:

 

     UIFont * f =[UIFont systemFontOfSize:20];

 

    [[UIColordarkGrayColor] set];

 

    NSString * text= @"hi \nKiloNet";

 

    [textdrawAtPoint:CGPointMake(center.x,center.y) withFont:f];

 

    15. NSArray查找是否存在对象时用indexOfObject,如果不存在则返回为NSNotFound.

 

    16. NString与NSArray之间相互转换:

 

array = [stringcomponentsSeparatedByString:@","];

string = [[array valueForKey:@"description"]componentsJoinedByString:@","];

 

     17.TabController随意切换tab bar:

 

[self.tabBarController setSelectedIndex:tabIndex];

 

或者self.tabBarController.selectedIndex = tabIndex;

 

或者实现下面的delegate来扑捉tab bar的事件:

 

代码-(BOOL)tabBarController:(UITabBarController *)tabBarController

shouldSelectViewController:(UIViewController*)viewController

{        if([viewController.tabBarItem.title isEqualToString:NSLocalizedString(@"Logout",nil)])

{        [selfshowLogout];        return NO;    }   return YES;}

 

    18. 自定义View之间切换动画:

代码

- (void) pushController: (UIViewController*) controller

        withTransition: (UIViewAnimationTransition) transition

{

    [UIViewbeginAnimations:nil context:NULL];

    [selfpushViewController:controller animated:NO];

    [UIViewsetAnimationDuration:.5];

    [UIViewsetAnimationBeginsFromCurrentState:YES];

    [UIViewsetAnimationTransition:transition forView:self.view cache:YES];

    [UIViewcommitAnimations];

}

 

CATransition *transition = [CATransition animation];

transition.duration = kAnimationDuration;

transition.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionPush;

transition.subtype = kCATransitionFromTop;

transitioning = YES;

transition.delegate = self;

[self.navigationController.view.layeraddAnimation:transition forKey:nil];

 

self.navigationController.navigationBarHidden = NO;

[self.navigationControllerpushViewController:tableViewController animated:YES];

 

     20.计算字符串长度:

 

CGFloat w = [title sizeWithFont:[UIFontfontWithName:@"Arial" size:18]].width;

 

  23.在使用UISearchBar时,将背景色设定为clearColor,或者将translucent设为YES,都不能使背景透明,经过一番研究,发现了一种超级简单和实用的方法:

 

1

 [[searchbar.subviewsobjectAtIndex:0]removeFromSuperview];

 

背景完全消除了,只剩下搜索框本身了。

 

  24.  图像与缓存 :

 

UIImageView *wallpaper = [[UIImageView alloc]initWithImage:

 

        [UIImageimageNamed:@"icon.png"]]; // 会缓存图片

 

UIImageView *wallpaper = [[UIImageView alloc]initWithImage:

 

        [UIImageimageWithContentsOfFile:@"icon.png"]]; // 不会缓存图片

 

  25. iphone-常用的对视图图层(layer)的操作

 

对图层的操作:

 

(1.给图层添加背景图片:

myView.layer.contents = (id)[UIImageimageNamed:@"view_BG.png"].CGImage;

 

(2.将图层的边框设置为圆脚

myWebView.layer.cornerRadius = 8;

myWebView.layer.masksToBounds = YES;

 

(3.给图层添加一个有色边框

myWebView.layer.borderWidth = 5;

myWebView.layer.borderColor = [[UIColor colorWithRed:0.52green:0.09 blue:0.07 alpha:1] CGColor];

 

 

 

将多个字符替换成空

NSCharacterSet *cs =[NSCharacterSet characterSetWithCharactersInString:@"1234567890|"];

NSString *resultstr = [[yourstrcomponentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

 

注:以上内容整理自互联网,本人不对其准确性及版权负责。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部