IOS相关知识点

相关文章 : 知识点

面试的文章:相关的文章

URL 有中文

可以通过转码的方式进行解决

urlStr= [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];



1.图片的简单压缩

1.//背景视图 (此种压缩有白边出现)

1.//背景视图 (此种压缩有白边出现)

UIImageView*bgIma = [[UIImageViewalloc] initWithFrame:BOUNDS];NSString*bgFile = [NSStringstringWithFormat:@"%@/%@",[[NSBundlemainBundle] resourcePath,@"zsBg.png"];

//图片缓存处理

UIImage*image = [[UIImagealloc] initWithContentsOfFile:bgFile];

NSData*data =UIImageJPEGRepresentation(image,1.0); 

 bgIma.image = [UIImageimageWithData:data]; 

 [selfaddSubview:bgIma];

2.封装方法 

 - (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize {

// Create a graphics image contextUIGraphicsBeginImageContext(newSize);

// Tell the old image to draw in this new context, with the desired

// new size[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

// Get the new image from the contextUIImage* newImage =UIGraphicsGetImageFromCurrentImageContext();

// End the contextUIGraphicsEndImageContext();

// Return the new image.

return newImage; 

 } 

 ((UIImageView*)view).image = [selfimageWithImage:[UIImageimageNamed:self.notiArr[index]] scaledToSize:CGSizeMake(WIDTH-20, HEIGHT-64-10-180)] ;

2.横竖屏详细相关(全局竖屏,特殊控制器横屏)**

    1.点项目 - Targets - General - Deployment Info ,如图

如图所示

2.在 appdelegate 头文件中添加属性/// 判断是否横竖屏@property(nonatomic,assign)BOOLallowRotation;

3.在 appdelegate 实现文件中实现方法/* 横竖屏 */- (UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window {if(self.allowRotation) {returnUIInterfaceOrientationMaskAllButUpsideDown; }returnUIInterfaceOrientationMaskPortrait; }

4.在需要横屏的文件中,导入头文件#import"AppDelegate.h",

添加如此代码

/// 横竖屏相关

AppDelegate *app =(AppDelegate *)[[UIApplicationsharedApplication] delegate]; app.allowRotation =YES;

判断系统版本

_判断 iOS 系统版本大于10_#define IOS_VERSION_10 (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_9_x_Max)?(YES):(NO) _判断 iOS系统具体版本_

1.预编译文件(.pch文件)定义#define iPHONEType struct utsname systemInfo;uname(&systemInfo);引用 iPHONETypeNSString*platform = [NSStringstringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];

2.[UIDevicecurrentDevice].systemVersion.floatValue ,

例如:if([UIDevicecurrentDevice].systemVersion.floatValue <7.0f) { Method newMethod = class_getInstanceMethod(self,@selector(compatible_setSeparatorInset:));// 增加Dummy方法class_addMethod(self,@selector(setSeparatorInset:), method_getImplementation(newMethod), method_getTypeEncoding(newMethod)); }

十六进制转十进制

- (NSString*)turn16to10:(NSString*)str {

if(str.length>10) {     

       str =[str substringFromIndex:str.length-10];    

    }

NSLog(@"字符=%@", str);

unsignedlonglongresult =0;NSScanner*scanner = [NSScannerscannerWithString:str];        [scanner scanHexLongLong:&result];NSString*tempInt =[NSStringstringWithFormat:@"%llu", result];

if(tempInt.length>7)

 {    

        tempInt =[tempInt substringFromIndex:tempInt.length-7];    

   }

NSLog(@"数字=%@", tempInt);returntempInt;  

  }

快速求和,最大值,最小值,平均值

NSArray*array = [NSArrayarrayWithObjects:@"2.0",@"2.3",@"3.0",@"4.0",@"10",nil];CGFloatsum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];CGFloatavg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];CGFloatmax =[[array valueForKeyPath:@"@max.floatValue"] floatValue];CGFloatmin =[[array valueForKeyPath:@"@min.floatValue"] floatValue];

Xcode 8 注释设置

    打开终端,命令运行: sudo /usr/libexec/xpccachectl

    然后必须重启电脑后生效

NSDate与NSString的相互转化

-(NSString*)dateToString:(NSDate*)date {

// 初始化时间格式控制器

NSDateFormatter*matter = [[NSDateFormatteralloc] init];

// 设置设计格式

[matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];

// 进行转换

NSString*dateStr = [matter stringFromDate:date];

return  dateStr;   

 }    

-(NSDate*)stringToDate:(NSString*)dateStr 

{

// 初始化时间格式控制器

NSDateFormatter*matter = [[NSDateFormatteralloc] init];

// 设置设计格式

[matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];

// 进行转换

NSDate*date = [matter dateFromString:dateStr];

return date;   

 }


设置字体和行间距

//设置字体和行间距

 UILabel * lable = [[UILabel alloc]initWithFrame:CGRectMake(50,100,300,200)]; 

lable.text =@"大家好,我是Frank_chun,在这里我们一起学习新的知识,总结我们遇到的那些坑,共同的学习,共同的进步,共同的努力,只为美好的明天!!!有问题一起相互的探讨--438637472!!!"; lable.numberOfLines =0;

lable.font = [UIFont systemFontOfSize:12];

lable.backgroundColor = [UIColor grayColor]; 

[self.view addSubview:lable]; 

//设置每个字体之间的间距 

//NSKernAttributeName 这个对象所对应的值是一个NSNumber对象(包含小数),作用是修改默认字体之间的距离调整,值为0的话表示字距调整是禁用的;

 NSMutableAttributedString * str = [[NSMutableAttributedString alloc]initWithString:lable.text attributes:@{NSKernAttributeName:@(5.0)}];

//设置某写字体的颜色//NSForegroundColorAttributeName 设置字体颜色

NSRange blueRange = NSMakeRange([[str string] rangeOfString:@"Frank_chun"].location, [[str string] rangeOfString:@"Frank_chun"].length);

 [str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:blueRange]; 

NSRange blueRange1 = NSMakeRange([[str string] rangeOfString:@"438637472"].location, [[str string] rangeOfString:@"438637472"].length);

[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:blueRange1];

//设置每行之间的间距

//NSParagraphStyleAttributeName 设置段落的样式

NSMutableParagraphStyle * par = [[NSMutableParagraphStyle alloc]init];

[par setLineSpacing:20];

//为某一范围内文字添加某个属性//NSMakeRange表示所要的范围,从0到整个文本的长度

[str addAttribute:NSParagraphStyleAttributeName value:par range:NSMakeRange(0, lable.text.length)];

 [lable setAttributedText:str];

效果图

Label行间距

-(void)test{    NSMutableAttributedString *attributedString =      [[NSMutableAttributedString alloc] initWithString:self.contentLabel.text];   

 NSMutableParagraphStyle *paragraphStyle =  [[NSMutableParagraphStyle alloc] init];    [paragraphStyle setLineSpacing:3];  

  //调整行间距         

 [attributedString addAttribute:NSParagraphStyleAttributeName                          value:paragraphStyle  range:NSMakeRange(0, [self.contentLabel.text length])];

    self.contentLabel.attributedText = attributedString;

}

判断一个点是否在一个区域,判断一个区域是否在一个区域 **

1.CGRect和CGPoint对比 (判断一个点是否在一个区域)

BOOLa =CGRectContainsPoint(_view.frame, point)

2.CGRect和CGRect对比 (判断一个区域是否在一个区域)

BOOLb =CGRectContainsRect(_view.frame,_btn.frame)

3.CGPoint和CGPoint对比 (判断两个点是否相同)

BOOLc =CGPointEqualToPoint(point1, point2);


修改状态栏字体颜色

只能设置两种颜色,黑色和白色,系统默认黑色设置为白色方法:

(1)在plist里面添加Status bar style,值为UIStatusBarStyleLightContent(白色)或UIStatusBarStyleDefault(黑 色)(2)在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO

 去掉导航栏下边的黑线

[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];

 修改pagecontrol颜色

_pageControl.currentPageIndicatorTintColor=SFQRedColor;

_pageControl.pageIndicatorTintColor=SFQGrayColor;

如何代码实现点击http://www.kaka.com或400-800-400或message实现跳转safari,phone或message? 

只需要在相应的代码中写入:  

1、调用 电话phone 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];


2、调用自带 浏览器 safari

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];

3、调用 自带mail

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];

4、调用 SMS

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

5,跳转到系统设置相关界面

1 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];

其中,发短信,发Email的功能只能填写要发送的地址或号码,无法初始化发送内容,如果想实现内容的话,还需要更复杂一些,实现其各自的委托方法。

若需要传递内容可以做如下操作:

//加入:MessageUI.framework 

 #import 

//实现代理:MFMessageComposeViewControllerDelegate 

//调用sendSMS函数  

//内容,收件人列表  

- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients  {  

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];  

if([MFMessageComposeViewController canSendText])  {  

controller.body = bodyOfMessage;    

controller.recipients = recipients;  

controller.messageComposeDelegate = self;  

     [self presentModalViewController:controller animated:YES];  

    }      

}  

// 处理发送完的响应结果  

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result  { 

  [self dismissModalViewControllerAnimated:YES];  

if(result == MessageComposeResultCancelled) 

NSLog(@"Message cancelled")  

elseif(result == MessageComposeResultSent)  

NSLog(@"Message sent")    

else

NSLog(@"Message failed")    

}

发送邮件的为:  

//导入MFMailComposeViewController  

#import 

//实现代理:MFMailComposeViewControllerDelegate  

//发送邮件 

-(void)sendMail:(NSString *)subject content:(NSString *)content{  

MFMailComposeViewController *controller = [[[MFMailComposeViewController alloc] init] autorelease];  

if([MFMailComposeViewController canSendMail])  {  

        [controller setSubject:subject];  

        [controller setMessageBody:content isHTML:NO];    

       controller.mailComposeDelegate = self;  

        [self presentModalViewController:controller animated:YES];   

    }    

}  

//邮件完成处理  

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{  

   [self dismissModalViewControllerAnimated:YES];  

if(result == MessageComposeResultCancelled)  

NSLog(@"Message cancelled"); 

elseif(result == MessageComposeResultSent)  

NSLog(@"Message sent");  

else

NSLog(@"Message failed");   

}  


默认发送短信的界面为英文的,解决办法为:在.xib 中的Localization添加一組chinese   

程序中获取软件的版本号和app名称  

应用程序的名称和版本号等信息都保存在mainBundle的infoDictionary字典中,用下面代码可以取出来。  

NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];  

NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];//版本名称  

NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"];//app名称 

NSString* versionShortString = [infoDict objectForKey:@"CFBundleShortVersionString"];//标识应用程序发布版本号

NSString*text =[NSString stringWithFormat:@"%@ %@",appName,versionNum,7versionShortString];

此version 为工程info下的Bundle version字段值:value可以随意定义。

CFBundleVersion,标识(发布或未发布)的内部版本号。这是一个单调增加的字符串,包括一个或多个时期分隔的整数。

CFBundleShortVersionString  标识应用程序的发布版本号。该版本的版本号是三个时期分隔的整数组成的字符串。第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订。第二个整数表示的修订,实现较突出的特点。第三个整数代表维护版本。该键的值不同于“CFBundleVersion”标识。

图片里的 Version 对应的就是CFBundleShortVersionString (发布版本号 如当前上架版本为1.1.0  之后你更新的时候可以改为1.1.1)

Build 对应的是 CFBundleVersion(内部标示,用以记录开发版本的,每次更新的时候都需要比上一次高 如:当前版本是11  下一次就要大于11 比如 12,13 ....10000)

算法

不用中间变量,用两种方法交换A和B的值

// 1.中间变量

void swap(int a, int b) {

  int temp = a;

  a = b;

  b = temp;

}

// 2.加法

void swap(int a, int b) {

  a = a + b;

  b = a - b;

  a = a - b;

}

// 3.异或(相同为0,不同为1. 可以理解为不进位加法)

void swap(int a, int b) {

  a = a ^ b;

  b = a ^ b;

  a = a ^ b;

}

求最大公约数

/** 1.直接遍历法 */

int maxCommonDivisor(int a, int b) {

    int max = 0;

    for (int i = 1; i <=b; i++) {

        if (a % i == 0 && b % i == 0) {

            max = i;

        }

    }

    return max;

}

/** 2.辗转相除法 */

int maxCommonDivisor(int a, int b) {

    int r;

    while(a % b > 0) {

        r = a % b;

        a = b;

        b = r;

    }

    return b;

}

// 扩展:最小公倍数 = (a * b)/最大公约数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容