在項目功能中有一個定位CLLocation的需求,遇到了一些知識難點,經(jīng)過各位大俠的幫助,問題解決,特此分享供大家學(xué)習(xí),希望大家共同學(xué)習(xí)進(jìn)步。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
一、簡單說明
1.CLLocationManager
CLLocationManager的常用操作和屬性
開始用戶定位- (void)startUpdatingLocation;
停止用戶定位- (void) stopUpdatingLocation;
說明:當(dāng)調(diào)用了startUpdatingLocation方法后,就開始不斷地定位用戶的'位置,中途會頻繁地調(diào)用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
每隔多少米定位一次
@property(assign, nonatomic) CLLocationDistance distanceFilter;
定位精確度(越精確就越耗電)
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
使用定位功能,首先要導(dǎo)入框架,遵守CLLocationManagerDelegate協(xié)議,再創(chuàng)建位置管理器CLLocationManager
在iOS8.0后,定位功能需要在info.plist中加入NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription這兩個NSString類型字段,才能夠使用定位功能
代碼貼出來與大家共勉,各位看官自行研究
{ self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self; if([CLLocationManager locationServicesEnabled] == NO) { // NSLog(@"沒有GPS服務(wù)"); } //地理位置精確度 _locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters; //設(shè)置距離篩選器,double類型,只要距離變化多少,就調(diào)用委托代理 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; //將經(jīng)度顯示到label上 _longitudeLabel.text = [NSString stringWithFormat:@"%f",longTI]; //將緯度現(xiàn)實到label上 _latitudeLabel.text = [NSString stringWithFormat:@"%f",latTI]; // 獲取當(dāng)前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根據(jù)經(jīng)緯度反向地理編譯出地址信息 [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); } }]; //系統(tǒng)會一直更新數(shù)據(jù),直到選擇停止更新,因為我們只需要獲得一次經(jīng)緯度即可,所以獲取之后就停止更新 [manager stopUpdatingLocation];}
以上是關(guān)于我給大家整理的IOS開發(fā)之詳解定位CLLocation,后續(xù)還會持續(xù)更新,希望大家能夠喜歡。
rand() ---- 隨機(jī)數(shù)
abs() / labs() ---- 整數(shù)絕對值
fabs() / fabsf() / fabsl() ---- 浮點數(shù)絕對值
floor() / floorf() / floorl() ---- 向下取整
ceil() / ceilf() / ceill() ---- 向上取整
round() / roundf() / roundl() ---- 四舍五入
sqrt() / sqrtf() / sqrtl() ---- 求平方根
fmax() / fmaxf() / fmaxl() ---- 求最大值
fmin() / fminf() / fminl() ---- 求最小值
hypot() / hypotf() / hypotl() ---- 求直角三角形斜邊的長度
fmod() / fmodf() / fmodl() ---- 求兩數(shù)整除后的余數(shù)
modf() / modff() / modfl() ---- 浮點數(shù)分解為整數(shù)和小數(shù)
frexp() / frexpf() / frexpl() ---- 浮點數(shù)分解尾數(shù)和二為底的指數(shù)
sin() / sinf() / sinl() ---- 求正弦值
sinh() / sinhf() / sinhl() ---- 求雙曲正弦值
cos() / cosf() / cosl() ---- 求余弦值
cosh() / coshf() / coshl() ---- 求雙曲余弦值
tan() / tanf() / tanl() ---- 求正切值
tanh() / tanhf() / tanhl() ---- 求雙曲正切值
asin() / asinf() / asinl() ---- 求反正弦值
asinh() / asinhf() / asinhl() ---- 求反雙曲正弦值
acos() / acosf() / acosl() ---- 求反余弦值
acosh() / acoshf() / acoshl() ---- 求反雙曲余弦值
atan() / atanf() / atanl() ---- 求反正切值
atan2() / atan2f() / atan2l() ---- 求坐標(biāo)值的反正切值
atanh() / atanhf() / atanhl() ---- 求反雙曲正切值
當(dāng)安裝多個xcode的版本,使用該工具使用指定的版本。
-p 或者 --print-path 查看當(dāng)前開發(fā)者目錄,也即是xcode的版本目錄。print the path of the active developer directory
-s path 或 --switch path 選擇xcode的版本
--install 安裝
--version 查看版本
--reset 恢復(fù)默認(rèn)
sudo rm -rf /Library/Developer/CommandLineTools 強(qiáng)制刪除安裝目錄下的文件
是管理Fat File的工具, 可以查看cpu架構(gòu), 提取特定架構(gòu),整合和拆分庫文件。
Mac OS X下二進(jìn)制可執(zhí)行文件的動態(tài)鏈接庫是dylib文件。所謂dylib,就是bsd風(fēng)格的動態(tài)庫?;究梢哉J(rèn)為等價于windows的dll和linux的so。mac基于bsd,所以也使用的是dylib。
Linux下用 ldd 查看,蘋果系統(tǒng)用 otool 。
otool命令介紹
MobSF
Mach-O 文件格式解析
xcodebuild :通過工程文件,生成app文件。
xcrun :通過app文件,來生成ipa文件(包含了簽名的過程)。
通過app文件生成ipa文件
libtool是一個通用庫支持腳本(/usr/bin/libtool),將使用動態(tài)庫的復(fù)雜性隱藏在統(tǒng)一、可移植的接口中。
可以在不同平臺上創(chuàng)建并調(diào)用動態(tài)庫,我們可以認(rèn)為libtool是gcc的一個抽象,也就是說,它包裝了gcc或者其他的任何編譯器,用戶無需知道細(xì)節(jié), 只要告訴libtool說我需要要編譯哪些庫即可,并且,它只與libtool文件打交道,例如lo、la為后綴的文件。
libtool工具的使用
庫是一單獨的文件,里面包含了按照特定的結(jié)構(gòu)組織起來的其它的一些文件(稱做此庫文件的member)。原始文件的內(nèi)容、模式、時間戳、屬主、組等屬性都保留在庫文件中。
詳細(xì)命令參見, 菜鳥網(wǎng)絡(luò)-ar命令
可以用來創(chuàng)建、修改庫,也可以從庫中提出單個模塊。
lipo libAFNetworking.a -thin arm64 -output lib-arm64.a 生成Arm64包
ar -t lib-arm64.a 輸出包含的.o文件 和 otool -L libAFNetworking.a 一樣。
ar -x lib-arm64.a 解壓出包里面的.o文件
在iOS開發(fā)中,常常用來分析二進(jìn)制和靜態(tài)庫文件。
列出 .o .a .so 中的符號信息,包括諸如符號的值,符號類型及符號名稱等。所謂符號,通常指定義出的函數(shù),全局變量等等。
iOS開發(fā)中,可以用來查看.a靜態(tài)庫所有打包進(jìn)去的.o文件和函數(shù)接口信息,幫助我們定位崩潰信息。
例如: nm -u libAFNetworking.a 列出某個.o文件的接口信息。
二進(jìn)制查看命令,將文件顯示為16進(jìn)制字符串表示形式。
例如: xxd libYTKNetwork.a | grep "net" 查看YTKNetwork.a文件里面包含net字符串的,幫助我們分析一些二進(jìn)制文件。
DWARF文件初探——提取輕量符號表
Mac系統(tǒng)下lipo, ar, nm等工具的使用簡介
美團(tuán) iOS 工程 zsource 命令背后的那些事兒
Linux工具參考篇
iOS 靜態(tài)庫沖突 兩個不同的.o 文件沖突 ,靜態(tài)庫分離
ios的開發(fā)框架有很多,常用的框架有Foundation、UIKit、CoreData和CoreGraphics等。
Foundation框架可以為所有的應(yīng)用程序提供基本系統(tǒng)服務(wù);UIKit提供了在屏幕上繪制的機(jī)制,捕獲事件,和創(chuàng)建通用用戶界面元素,所有的iOS應(yīng)用程序都基于UIKit。
CoreData提供對象的管理,使用CoreData,可以創(chuàng)建模型對象并管理這些對象;高質(zhì)量的圖形對于所有的iOS應(yīng)用程序很重要,CoreGraphics則提供了更底層的庫來幫助創(chuàng)建復(fù)雜圖形。
總結(jié):
ios的開發(fā)框架有很多,常用的框架有Foundation、UIKit、CoreData和CoreGraphics等。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:0731-84117792E-MAIL:11247931@qq.com
1、英文鍵盤:
UIKeyboardTypeAlphabet(Alphabet字母)
UIKeyboardTypeASCIICapable
UIKeyboardTypeDefault
這三個默認(rèn)都顯示字母表。默認(rèn)下面第一幅圖,點左下角切換到下面第二幅圖。
2、數(shù)字鍵盤
UIKeyboardTypeDecimalPad (Decimal十進(jìn)制)
3、電子郵箱鍵盤
UIKeyboardTypeEmailAddress
4、沒有符號的英文鍵盤
UIKeyboardTypeNamePhonePad
這個類型默認(rèn)顯示第一幅圖片,如果點擊123按鈕則會顯示第二副鍵盤。
5、沒有小數(shù)點的數(shù)字鍵盤
UIKeyboardTypeNumberPad
6、全鍵盤的數(shù)字鍵盤
UIKeyboardTypeNumbersAndPunctuation
默認(rèn)顯示下面第一幅圖,切換顯示第二幅
7、帶符號的數(shù)字鍵盤
UIKeyboardTypePhonePad
默認(rèn)顯示下面第一幅圖,切換顯示第二幅
8、推特鍵盤
UIKeyboardTypeTwitter
默認(rèn)顯示下面第一幅圖,切換顯示第二幅
當(dāng)前名稱:ios開發(fā)常用,iOS用什么開發(fā)
網(wǎng)頁鏈接:http://muchs.cn/article40/phedeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、搜索引擎優(yōu)化、、網(wǎng)頁設(shè)計公司、關(guān)鍵詞優(yōu)化、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)