ios开发项目遇到的难点,ios开发难度高不高
ios面试项目难点有哪些
iOS面试|project|IOS面试课程资料 在线免费观看
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的河津网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
链接:
提取码:m94s
iOS面试|project|IOS面试课程资料|目录.txt|第9章 RunLoop相关面试问题(录).mp4|第8章 多线程相关面试问题(录).mp4|第7章 Block相关面试问题(录).mp4|第6章 内存管理相关面试问题(录).mp4|第5章 Runtime相关面试问题(录).mp4|第4章 Objective-C语言特性相关面试问题(录).mp4|第3章 UI视图相关面试问题(录).mp4|第1章 导学(录).mp4|第15章 课程总结(录).mp4|第14章 第三方库相关面试问题(录).mp4|第13章 算法相关面试问题(录).mp4
IOS开发笔记整理
在项目功能中有一个定位CLLocation的需求,遇到了一些知识难点,经过各位大侠的帮助,问题解决,特此分享供大家学习,希望大家共同学习进步。
一、简单说明
1.CLLocationManager
CLLocationManager的常用操作和属性
开始用户定位- (void)startUpdatingLocation;
停止用户定位- (void) stopUpdatingLocation;
说明:当调用了startUpdatingLocation方法后,就开始不断地定位用户的'位置,中途会频繁地调用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
每隔多少米定位一次
@property(assign, nonatomic) CLLocationDistance distanceFilter;
定位精确度(越精确就越耗电)
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
使用定位功能,首先要导入框架,遵守CLLocationManagerDelegate协议,再创建位置管理器CLLocationManager
在iOS8.0后,定位功能需要在info.plist中加入NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription这两个NSString类型字段,才能够使用定位功能
代码贴出来与大家共勉,各位看官自行研究
{ self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self; if([CLLocationManager locationServicesEnabled] == NO) { // NSLog(@"没有GPS服务"); } //地理位置精确度 _locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters; //设置距离筛选器,double类型,只要距离变化多少,就调用委托代理 self.locationManager.distanceFilter = kCLDistanceFilterNone; // meters [_locationManager requestWhenInUseAuthorization];// 前台定位 [_locationManager startUpdatingLocation];}- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"longitude = %f", ((CLLocation *)[locations lastObject]).coordinate.longitude); NSLog(@"latitude = %f", ((CLLocation *)[locations lastObject]).coordinate.latitude); CGFloat longTI=((CLLocation *)[locations lastObject]).coordinate.longitude; CGFloat latTI=((CLLocation *)[locations lastObject]).coordinate.latitude; //将经度显示到label上 _longitudeLabel.text = [NSString stringWithFormat:@"%f",longTI]; //将纬度现实到label上 _latitudeLabel.text = [NSString stringWithFormat:@"%f",latTI]; // 获取当前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根据经纬度反向地理编译出地址信息 [geocoder reverseGeocodeLocation:locations.lastObject completionHandler:^(NSArray *array, NSError *error) { if (array.count 0) { CLPlacemark *placemark = [array objectAtIndex:0];// //将获得的所有信息显示到label上// self.location.text = placemark.name; //获取城市 NSString *city = placemark.locality; if (!city) { //四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市) city = placemark.administrativeArea; } // NSLog(@"city = %@", city); _cityName=city; } else if (error == nil [array count] == 0) { // NSLog(@"No results were returned."); } else if (error != nil) { // NSLog(@"An error occurred = %@", error); } }]; //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新 [manager stopUpdatingLocation];}
以上是关于我给大家整理的IOS开发之详解定位CLLocation,后续还会持续更新,希望大家能够喜欢。
iOS开发中遇到的小问题-----总结
1、统一收键盘的方法
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
2、提示框
BBAlertView *alert = [[BBAlertView alloc] initWithStyle:BBAlertViewStyleDefault
Title:@"删除订单"
message:@"是否删除订单,"
customView:nil
delegate:self
cancelButtonTitle:L(@"取消")
otherButtonTitles:L(@"确认")];
[alert setCancelBlock:^{
}];
[alert setConfirmBlock:^{
[self orderDidRemovePressDown:tempDic Index:index.section];
}];
[alert show];
3、图片的自适应功能
self.brandImage.contentMode = UIViewContentModeScaleAspectFit;
4、cocoaPods清除缓存问题
$ sudo rm -fr ~/.cocoapods/repos/master
$ pod setup
5、设置显示键盘的样式
textView.keyboardType =UIKeyboardTypeDefault;
//设置键盘右下角为完成(中文输入法下)
textView.returnKeyType=UIReturnKeyDone;
6、输出当前时间
NSDateFormatter * dateFormatter=[[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"当前毫秒时间1==%@",[dateFormatter stringFromDate:[NSDate date]]);
7、显示两秒然后消失
UILabel * lab=[[UILabel alloc]initWithFrame:CGRectMake(60,Main_Screen_Height-64-49-60, Main_Screen_Width-120, 50)];
lab.backgroundColor=[UIColor grayColor];
ViewRadius(lab, 20);
lab.textAlignment=NSTextAlignmentCenter;
lab.text=@"请先进行实名制验证";
[self.view addSubview:lab];
[UILabel animateWithDuration:2 animations:^{
lab.alpha=0;
}completion:^(BOOL finished) {
[lab removeFromSuperview];
}];
8、设置placeholder属性的大小和颜色
[_phoneFie setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
[_phoneFie setValue:[UIFont boldSystemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];
_phoneFie.returnKeyType=UIReturnKeyDone;
9、设置cell的交互完全不可以使用
//[cellTwo setUserInteractionEnabled:NO];
//设置cell不可以点击,但是上面的子控件可以交互
cellTwo.selectionStyle=UITableViewCellSelectionStyleNone;
10、将textField的placeholder 属性的字体向右边移动5
_field.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10*Width_375, _field.frame.size.height)];
_field.leftViewMode = UITextFieldViewModeAlways;
11、开新线程使按钮上的时间变化
-(void)startTime{
__block int timeout=60; //倒计时时间
UIButton * btn=(UIButton *)[self.view viewWithTag:1000];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
if(timeout=0){
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
[btn setTitle:@"发送验证码" forState:UIControlStateNormal];
btn.enabled = YES;
});
}else{
// int minutes = timeout / 60;
int miao = timeout % 60;
if (miao==0) {
miao = 60;
}
NSString *strTime = [NSString stringWithFormat:@"%.2d", miao];
dispatch_async(dispatch_get_main_queue(), ^{
[btn setTitle:[NSString stringWithFormat:@"剩余%@秒",strTime] forState:UIControlStateNormal];
btn.enabled = NO;
});
timeout--;
}
});
dispatch_resume(_timer);
}
12、隐藏TableView 中多余的行
UIView * view=[[UIView alloc]initWithFrame:CGRectZero];
[_tabelView setTableFooterView:view];
13、UIView添加背景图片
UIImage * image=[UIImage imageNamed:@"friend750"];
headSeV.layer.contents=(id)image.CGImage;
14、UITableView取消选中状态
[tableView deselectRowAtIndexPath:indexPath animated:YES];// 取消选中
15、带属性的字符串
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName 删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName 删除线宽度
NSShadowAttributeName 阴影
1. 使用实例
UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)];
testLabel.backgroundColor = [UIColor lightGrayColor];
testLabel.textAlignment = NSTextAlignmentCenter;
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天气不错呀"];
[AttributedStr addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:16.0]
range:NSMakeRange(2, 2)];
[AttributedStr addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(2, 2)];
testLabel.attributedText = AttributedStr;
[self.view addSubview:testLabel];
16、加大按钮的点击范围
把UIButton的frame 设置的大一些,然后给UIButton设置一个小些的图片
[tmpBtn setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
// 注意这里不能用setBackgroundImage
[tmpBtn setImage:[UIImage imageNamed:@"testBtnImage"] forState:UIControlStateNormal];
17、//避免self的强引用
__weak ViewController *weakSelf = self;
18、//类别的创建
command +n ——Objective-C File———(File Type 选择是类别还是扩展)———(Class 选择为哪个控件写类别)
19、修改UITableview 滚动条颜色的方法
self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;
20、利用UIWebView显示pdf文件
webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
[webView setDelegate:self];
[webView setScalesPageToFit:YES];
[webViewsetAutoresizingMask:UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight];
[webView setAllowsInlineMediaPlayback:YES];
[self.view addSubview:webView];
NSString *pdfPath = [[NSBundle mainBundle]pathForResource:@"ojc" ofType:@"pdf"];
NSURL *url = [NSURLfileURLWithPath:pdfPath];
NSURLRequest *request = [NSURLRequestrequestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5];
[webView loadRequest:request];
21、将plist文件中的数据赋给数组
NSString *thePath = [[NSBundle mainBundle]pathForResource:@"States" ofType:@"plist"];
NSArray *array = [NSArrayarrayWithContentsOfFile:thePath];
22、隐藏状态栏
[[UIApplication shareApplication]setStatusBarHidden: YES animated:NO];
23、给navigation Bar 设置title颜色
UIColor *whiteColor = [UIColor whiteColor];
NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];
[self.navigationController.navigationBar setTitleTextAttributes:dic];
24、使用AirDrop 进行分享
NSArray *array = @[@"test1", @"test2"];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:array applicationActivities:nil];
[self presentViewController:activityVC animated:YES
completion:^{
NSLog(@"Air");
}];
25、把tableview里面Cell的小对勾的颜色改成别的颜色
_mTableView.tintColor = [UIColor redColor];
26、UITableView去掉分割线
_tableView.separatorStyle = NO;
27、正则判断手机号码地址格式
- (BOOL)isMobileNumber:(NSString *)mobileNum {
// 电信号段:133/153/180/181/189/177
// 联通号段:130/131/132/155/156/185/186/145/176
// 移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
// 虚拟运营商:170
NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return [regextestmobile evaluateWithObject:mobileNum];
}
28、控制交易密码位数
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField.text.length =6){
[MBProgressHUD showMessage:@"密码为6位" afterDelay:1.8];
return NO;
}
return YES;
}
29、判断是不是空
if ([real_name isKindOfClass:[NSNull class]] ) {
return NO;}
30、点击号码拨打电话
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://400966220"]];
31、控制UITabbar的选择哪一个
[self.tabBarController setSelectedIndex:1];
32、获取当前App的版本号
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
CFShow(infoDictionary);
// app名称
NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];
// app版本
NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
// app build版本
NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];
33、苹果app权限NSPhotoLibraryUsageDescriptionApp需要您的同意,才能访问相册NSCameraUsageDescriptionApp需要您的同意,才能访问相机NSMicrophoneUsageDescriptionApp需要您的同意,才能访问麦克风NSLocationUsageDescriptionApp需要您的同意,才能访问位置NSLocationWhenInUseUsageDescriptionApp需要您的同意,才能在使用期间访问位置NSLocationAlwaysUsageDescriptionApp需要您的同意,才能始终访问位置NSCalendarsUsageDescriptionApp需要您的同意,才能访问日历NSRemindersUsageDescriptionApp需要您的同意,才能访问提醒事项NSMotionUsageDescriptionApp需要您的同意,才能访问运动与健身NSHealthUpdateUsageDescriptionApp需要您的同意,才能访问健康更新NSHealthShareUsageDescriptionApp需要您的同意,才能访问健康分享NSBluetoothPeripheralUsageDescriptionApp需要您的同意,才能访问蓝牙NSAppleMusicUsageDescriptionApp需要您的同意,才能访问媒体资料库
34、控件设置边框
_describText.layer.borderColor = [[UIColor colorWithRed:215.0 / 255.0 green:215.0 / 255.0 blue:215.0 / 255.0 alpha:1] CGColor];
_describText.layer.borderWidth = 1.0;
_describText.layer.cornerRadius = 4.0;
_describText.clipsToBounds = YES;
35、//隐藏电池条的方法
-(BOOL)prefersStatusBarHidden{
return YES;
}
36、延时操作
[NSThread sleepForTimeInterval:2];
方法二:
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.5];
37、系统风火轮:
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隐藏
38、//didSelectRowAtIndexPath:方法里面找到当前的Cell
AssessMentCell * cell = [tableView cellForRowAtIndexPath:indexPath];
39、navigation上返回按钮的颜色以及返回按钮后面文字去掉
//返回按钮后边文字去掉
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
forBarMetrics:UIBarMetricsDefault];
//设置左上角返回按钮的颜色
self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x666666);
40、lineBreakMode //设置文字过长时的显示格式
label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显
示,后面部分省略不显示。
label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内
容长度,后半部分被删除。
label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字
以……方式省略,显示尾部文字内容。
label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容
以……方式省略,显示头尾的文字内容。
label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容
以……方式省略,显示头的文字内容。
label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显
示,后面部分省略不显示。
iOS开发如何突破瓶颈,这样做就好!【经验篇】
一般说来,刚毕业,活力四射,总是有一股子冲劲,心里也梦,想把不懂的东西都先弄明白,充实而忙碌。就算每天需要占用吃饭、睡觉的时间去学习与努力,也不会觉得累,总之时刻都会激情高昂的样子。
后来,工作两三年,有足够的能力应付自己的工作了,也没有之前那般拼命劲了。每天做的工作游刃有余,准时上班,准点下班。这个时候你要了解到有两种情况:
1、这个工作你已经胜任了,也证明了你的能力水平。
2、你的工作中出现瓶颈了,除了现有能够处理的工作,你没有一丝进展。面对这两种情况,你要思考是否是处在了舒适区。
尽管,你每天熟练的处理手头工作,日子过得也特别快,但是总会感觉着空虚感和焦虑感相互交叠。所以,我相信你此刻需要跳出舒适区了。
每个人都想要成功,但也很容易沉溺于舒适的生活里。一份安稳的工作,朝九晚五,余下时间可以和朋友与家人一起吃喝玩乐。这样的日子无一不是大家所喜欢并期待的。但看到身边很多人都成功了,内心又有不甘,幻想着有朝一日能够和他们一样,出人头地,但你真的能够有勇气跳出舒适区吗?
首先,要重新去了解自己。了解自己就意味着什么呢?意味着接受。接受自己并不完美的一面。
1、 我并不完美,除了基础技术能力之外,其他一无所长。
2、 我并不成功,除了在现所处的公司,能应对一些基础问题之外,我的能力并没有优势。
3、 我真正想要的东西,似乎离自己越来越远。
4、 很久没有努力了,没有那种奋斗的精神。
5、 不知道从何开始,害怕现有的东西都会失去了。
当你习惯了很多东西之后,你明明在泥沼里,却以为在任天堂一般。作为一枚程序员还想着安逸,这就是你的不对了。互联网技术日新月异,程序员并不是只掌握一项技术就能够高枕无忧了。想要改变现状,可以从以下几个方面了解:
如果,没有曾经那种激情了,如果,不知道从何开始,那就先将自己处于危险之中,险中求生,对安逸的人来说是很大的挑战。
第一步 ,斩断后路,不管现在你多安逸,你都要思考接下来该不该继续安逸下来,跳出这个区域,你要思考接下来将遇到最大的危险是什么。比如说,现在的公司只能做手头现有的工作,没有办法提升能力,那么是不是应该去人才市场验证自己的能力和其他发展机会呢?倘若公司可以变通,那又应该怎样去做呢?可以直接跨入第二步。
第二步 ,行动如风,不管你是离职重新估量自己的能力,还是在现任岗位上进行提升,你都要明白自己现在有哪些问题,并且进行分析与解决。你可以进行职业规划和能力评估。又该怎样规划?首先,置于危险中并不是忽视后果,而是通过估量这个事情的危险系数有多大,再进行抉择,其次就是职业规划,你几年后,乃至这一辈子,你的职业规划是否适合,是否能够执行落地,你接下来要做的事情是否能够通过自身努力与坚持就能够实现,实现不了,将怎么办?这些都需要思考。
第三步 ,计划落地。不管怎样,你要面对的事情都不外乎是提升自己的能力。怎样实施落地,可以做年计划,半年计划,周计划、日计划等等,这些需要坚持下去,还要进行分析,并调整方向,而不是做了就放任不管,那跟在舒适区并没有什么特别之处,你要做的就是通过量变行动达到质变的效果。
我的一个iOS技术交流群:624212887,里面都是iOS开发,全栈发展,欢迎入驻交流!
——点击: 加入
别人都说35岁是程序员工作的终点。其实,也可以算是程序员的另一段人生的开始。以上几点问题,在这个年龄之前都要认真去思考解决。做好技术积累,构建个人核心竞争力是程序员最主要的能力,接下来就是个人软实力的塑造,有人说软实力是虚的,但事实证明“成大事者不拘专业,有软实力笑傲江湖!”
那么该怎样做呢?
技术能力 :是程序员不能丢的东西,你只有熟练操作技术能力,才能够深入解决技术层面需要面临的问题,以及该如何去解决。怎样提升技术能力,方式有很多,无非就是能够静下来,坐下去。只要你能在下班之后,认真多加一两个小时的班,将学习的知识融入实践中去,技术能力就能够提升上去。
软实力提升 :可以从思维能力、沟通能力、表达能力、文化修养、学习能力、团队协作能力出发,这些方面都会在生活和工作中体现出来,可以阅读和学习相关知识,并通过刻意练习来提升相关能力。最主要的是,这些事情都有自己的线,而且时刻都要拽紧这根线,你才不会成为断线风筝,任意漂流。
古人云:“活到老,学到老。”你放弃学习,就等于慢性自杀。所以在没有很大进展的时刻,不如跳出来,看看世界。这个世界能给你带来哪些好处呢?
如果你提升了自己的技术能力,你至少可以获得更多待遇更好的offer。那么你所面临的层次就更上一层楼。技术没有封顶,只有你触不到的境界,要想到高境界除了自身努力和引导人之外,还需要环境的塑造。软实力也是一样,你遇到的人和问题深度也不一样,自然解决的方式和效果也是不一样。
我的iOS技术交流群:624212887,欢迎入驻交流,!——点击: 加入
生活不可能是一帆风顺的,你怎么对它,它就一定会反馈给你。你努力奋斗所积累的能力,都会化作RMB回馈给你。比如说你的技术超厉害了,那么哪个HR会放过你呢?如果你的软实力比如说思维、沟通等能力能让你面前的问题全都解决掉,那又有哪个公司的老板不会拿高薪酬留住你呢?
分享名称:ios开发项目遇到的难点,ios开发难度高不高
URL网址:http://hbruida.cn/article/dsccjso.html