亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS開發基礎知識--碎片20

2019-11-14 18:32:52
字體:
來源:轉載
供稿:網友

1:view中的clipsTobounds屬性

iew2添加view1到中,如果view2大于view1,或者view2的坐標不全在view1的范圍內,view2是蓋著view1的,意思就是超出的部份也會畫出來,UIView有一個屬性,clipsTobounds 默認情況下是NO。如果,我們想要view2把超出的那部份隱藏起來的話,就得改變它的父視圖也就view1的clipsTobounds屬性值。view1.clipsTobounds = YES;可以很好地解決覆蓋的問題

2:UIScrollView滾動視圖加載單元格點擊事件

svView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, mainWidth, perHeight)];        svView.bounces = NO;        svView.contentSize = CGSizeMake(perWidth*6, perHeight);        UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];        [self addGestureRecognizer:tap];        [self addSubview:svView];事件:- (void)tapClick:(UITapGestureRecognizer*)tap{    CGPoint point = [tap locationInView:svView];    int page = point.x / perWidth;    HomeHostest* hot = [myData objectAtIndex:page];    if(delegate)    {        [delegate adClick:[NSString stringWithFormat:@"goodsdetail,%@",[hot.goodsID stringValue]]];    }}- (CGPoint)locationInView:(UIView *)view:函數返回一個CGPoint類型的值,表示觸摸在view這個視圖上的位置,這里返回的位置是針對view的坐標系的。調用時傳入的view參數為空的話,返回的時觸摸點在整個窗口的位置。 (CGPoint)PReviousLocationInView:(UIView *)view:該方法記錄了前一個坐標值,函數返回也是一個CGPoint類型的值, 表示觸摸在view這個視圖上的位置,這里返回的位置是針對view的坐標系的。調用時傳入的view參數為空的話,返回的時觸摸點在整個窗口的位置。

3:對表格中的某個節跟每一行進行單獨刷新

[self.myTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];

4:類似微信的搜索附近的人的功能 在 服務端的實現 

基準線預先計算法每個用戶在服務器端都會保留最后的經度j1 和緯度w1 的同時 保留對經度基準線的相對距離 dj1 和緯度基準線的相對距離 dw1經度基準線可以是中國最東邊的經度  緯度基準線可以是中國最北邊的緯度  當前用戶對經度基準線的相對距離 dj2 =230km 和緯度基準線的相對距離 dw2=350km查找時sql語句可以這么寫(1.5公里內的用戶) select * from user where dj1>(230-1.5) and dj1<(230+1.5) and  dw1>(230-1.5) and dw1<(230+1.5)相當于獲得當前用戶 周圍正方形1.5公里區域的用戶此外通過將冷熱數據分開存放及 分塊存放 用戶地理數據應該能有效的提高查詢速度另附:(考慮把經度和緯度分成多個表存放,比如24個經度表,每個表按緯度分別排序,查找時只在最靠近的那個表查找,由于是排序的所以并不需要遍歷每個記錄,比如緯度相差多少的就不用再找了。 )

5:定位一些基礎內容 CLLocation

01. CLLocation--------------------------------------------------------CLLocationManager 定位管理者CLLocation 代表位置(經度/緯度/高度/速度/路線等)CLHeading  代表移動方向CLRegion   代表一個區域>CLCircularRegion  圓形區域>CLBeaconRegion 藍牙信號區域返回定位服務是否可用[CLLocationManager locationServicesEnabled];返回延遲定位更新是否可用[CLLocationManager deferredLocationUpdatesAvailable];返回重大位置改變監聽是否可用[CLLocationManager significantLocationChangeMonitoringAvailable];返回是否支持磁力計算方向[CLLocationManager headingAvailable];返回藍牙信號范圍服務是否可用[CLLocationManager isRangingAvailable];--------------------------------------------------------設置是否可以暫停定位來節省電池電量, YES不需要定位數據時自動暫停定位// mgr.pausesLocationUpdatesAutomatically--------------------------------------------------------每隔多少米定位一次, 只有水平方向超過該值時才會重新定位// mgr.distanceFilter = 100;--------------------------------------------------------定位精確度// mgr.desiredAccuracy;kCLDistanceFilterNone;kCLLocationAccuracyBestForNavigation 導航級最佳精準kCLLocationAccuracyBest; 最佳精準kCLLocationAccuracyNearestTenMeters; 10米誤差kCLLocationAccuracyHundredMeters; 百米胡茬kCLLocationAccuracyKilometer;  千米誤差kCLLocationAccuracyThreeKilometers; 3千米誤差--------------------------------------------------------定位數據的用途// mgr.activityType;CLActivityTypeOther 作為普通用途CLActivityTypeAutomotiveNavigation  作為車輛導航CLActivityTypeFitness  作為步行CLActivityTypeOtherNavigation 作為其它導航--------------------------------------------------------// CLLocationlocation.coordinate; 坐標, 包含經緯度location.altitude; 設備海拔高度 單位是米location.course; 設置前進方向 0表示北 90東 180南 270西location.horizontalAccuracy; 水平精準度location.verticalAccuracy; 垂直精準度location.timestamp; 定位信息返回的時間location.speed; 設備移動速度 單位是米/秒, 適用于行車速度而不太適用于步行/* 可以設置模擬器模擬速度 bicycle ride 騎車移動 run 跑動 freeway drive 高速公路駕車 */--------------------------------------------------------// CLAuthorizationStatus用戶從未選擇過權限kCLAuthorizationStatusNotDetermined無法使用定位服務,該狀態用戶無法改變kCLAuthorizationStatusRestricted用戶拒絕該應用使用定位服務,或是定位服務總開關處于關閉狀態kCLAuthorizationStatusDenied已經授權(廢棄)kCLAuthorizationStatusAuthorized用戶允許該程序無論何時都可以使用地理信息kCLAuthorizationStatusAuthorizedAlways用戶同意程序在可見時使用地理位置kCLAuthorizationStatusAuthorizedWhenInUse--------------------------------------------------------// 計算兩個位置之間的距離, 單位是米[newLocation distanceFromLocation:self.prevLocation];--------------------------------------------------------獲取方向信息不會提示用戶(不需要授權), 因為不會泄露隱私// [self.mgr startUpdatingHeading];magneticHeading 設備與磁北的相對角度trueHeading 設置與真北的相對角度, 必須和定位一起使用, iOS需要設置的位置來計算真北真北始終指向地理北極點磁北對應隨著時間變化的地球磁場北極// 牛逼的地方116.958776,36.721199--------------------------------------------------------// 錯誤:使用CoreLocation獲取地理位置信息,報錯Error Domain=kCLErrorDomain Code=0 "The Operation couldn’t be completed. (kCLErrorDomain error 0.)"解決方法:1.確定模擬器(手機)已經聯網并且允許程序獲取地理位置2.重置地理位置服務或者網絡服務PS:如果是模擬器就果斷直接重置模擬器吧  IOS Simulator - Reset Content and Settings..。    /*     注意: iOS7只要開始定位, 系統就會自動要求用戶對你的應用程序授權. 但是從iOS8開始, 想要定位必須先"自己""主動"要求用戶授權      在iOS8中不僅僅要主動請求授權, 而且必須再info.plist文件中配置一項屬性才能彈出授權窗口     NSLocationWhenInUseDescription,允許在前臺獲取GPS的描述     NSLocationAlwaysUsageDescription,允許在后臺獲取GPS的描述    */

6:CGPoint一些常見操作

數據結構中的一個點CGPoint代表在一個二維坐標系統。數據結構的位置和尺寸CGRect代表的一個長方形。數據結構的尺寸CGSize代表寬度和高度。1、創建一個幾何原始數值CGPoint  CGPointMake(CGPoint A,CGPoint B)            返回一個指定坐標點  CGRect   CGRectMake(CGFloat x,CGFloat y,CGFloat width,CGFloat height)根據指定的坐標和大小創建一個矩形CGSize   CGSizeMake(CGFloat width,CGFloat height)根據指定長寬創建一個CGSize   2、修改矩形CGRectDivideCGRect  CGRectInset(CGRect rect,CGFloat dx,CGFloat dy)返回一個比原矩形大或小的矩形,但是中心點是相同的CGRect CGRectIntegral(CGRect A)將矩形A的值轉變成整數,得到一個最小的矩形,CGRect CGRectIntersection:(CGRect A,CGRect B)獲取兩個矩形相交處所的矩形,沒有相交返回NULL,用CGRectIsNull來檢測CGRectOffsetCGRectStandardizeCGRectUnion3、比較數值bool  CGPointEqualToPoint(CGPoint A,CGPoint B)     返回兩個點是否相等bool  CGSizeEqualToSize(CGSize A,CGSize B)CGSizeAB是否相等bool  CGRectEqualToRect(CGRect A,CGRect B)       矩形AB的位置大小是否相等bool  CGRectIntersectsRect(CGRect A,CGRect B)矩形AB是否相交,可用來判斷精靈是否離開了屏幕4、檢查bool  CGRectContainsPoint(CGRect A, CGPoint B)      檢測矩形A是否包含指定的點Bbool  CGRectContainsRect(CGRect A,CGRect B)  檢測矩形A是否包含矩形B5、獲取最大值、中等職和最小值CGFloat   CGRectGetMinX(CGRect A) 獲取矩形x坐標的最小值CGFloat   CGRectGetMinY(CGRect A)獲取矩形y坐標的最小值 CGFloat   CGRectGetMidX(CGRect A) 獲取矩形x坐標的中間值 CGFloat   CGRectGetMidY(CGRect A) 獲取矩形y坐標的中間值 CGFloat   CGRectGetMaxX(CGRect A) 獲取矩形x坐標的最大值 CGFloat   CGRectGetMaxY(CGRect A)獲取矩形y坐標的最大值  6、獲取高和寬CGFloat  CGRectGetHeight(CGRect A)               獲取矩形A的高CGFloat  CGRectGetWidth(CGRect A)            獲取矩形A的寬7、檢測矩形是否存在或是無窮大bool  CGRectIsEmpty(CGRect A)矩形A是否長和寬都是0,或者是個NULLbool  CGRectIsNull(CGRect A)矩形A是否為NULLbool  CGRectIsInfinite(CGRect A)矩形A是否無窮大,沒有邊界

7:iOS7 中 boundingRectWithSize:options:attributes:context:計算文本尺寸的使用

之前使用了NSString類的sizeWithFont:constrainedToSize:lineBreakMode:方法,但是該方法已經被iOS7 Deprecated了,而iOS7新出了一個boudingRectWithSize:options:attributes:context方法來代替。而具體怎么使用呢,尤其那個attributeNSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:13]};CGSize size = [@“相關NSString” boundingRectWithSize:CGSizeMake(100, 0) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;屬性a:NSStringDrawingTruncatesLastVisibleLine:如果文本內容超出指定的矩形限制,文本將被截去并在最后一個字符后加上省略號。如果沒有指定NSStringDrawingUsesLineFragmentOrigin選項,則該選項被忽略。b:NSStringDrawingUsesLineFragmentOrigin:繪制文本時使用 line fragement origin 而不是 baseline origin。c:NSStringDrawingUsesFontLeading:計算行高時使用行距。(譯者注:字體大小+行間距=行距)d:NSStringDrawingUsesDeviceMetrics:計算布局時使用圖元字形(而不是印刷字體)。實例二:        NSString *str = @"正在搜索附近的位置";        UIFont *font = [UIFont systemFontOfSize:14.0];        CGSize size = CGSizeMake(CGFLOAT_MAX, 50);        CGRect rect = [str boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont fontWithName:font.fontName size:font.pointSize]} context:nil];                CGRect buttonFrame = CGRectZero;        buttonFrame.size.height = CGRectGetHeight(rect);        buttonFrame.size.width = CGRectGetWidth(rect);        UILabel *label = [[UILabel alloc]initWithFrame:buttonFrame];

8:一段布局排版關于tableView.tableFooterView設置按鍵跟等待提示

- (UIView *)searchDisplayLoadingFooterView{    if (!_searchDisplayLoadingFooterView) {        _searchDisplayLoadingFooterView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.tableView.bounds), 50)];        _searchDisplayLoadingFooterView.backgroundColor = [UIColor clearColor];        NSString *str = @"正在搜索附近的位置";        UIFont *font = [UIFont systemFontOfSize:14.0];        CGSize size = CGSizeMake(CGFLOAT_MAX, 50);        CGRect rect = [str boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont fontWithName:font.fontName size:font.pointSize]} context:nil];                CGRect buttonFrame = CGRectZero;        buttonFrame.size.height = CGRectGetHeight(rect);        buttonFrame.size.width = CGRectGetWidth(rect);                UILabel *label = [[UILabel alloc]initWithFrame:buttonFrame];        label.backgroundColor = [UIColor clearColor];        label.text = str;        label.font = font;        label.textColor = [UIColor colorWithHexString:@"0x222222"];        label.numberOfLines = 1;        label.textAlignment = NSTextAlignmentCenter;        label.center = _searchDisplayLoadingFooterView.center;        [_searchDisplayLoadingFooterView addSubview:label];                CGPoint indicatorCenter = CGPointZero;        indicatorCenter.x = CGRectGetMinX(label.frame) - 20;        indicatorCenter.y = label.center.y;                UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];        indicator.center = indicatorCenter;        indicator.hidesWhenStopped = YES;        [_searchDisplayLoadingFooterView addSubview:indicator];        [indicator startAnimating];                CGRect lineFrame = _searchDisplayLoadingFooterView.bounds;        lineFrame.size.height = 0.5;                UIView *topLine = [[UIView alloc]initWithFrame:lineFrame];        topLine.backgroundColor = [UIColor colorWithHexString:@"0xdddddd"];                lineFrame.origin.y = CGRectGetMaxY(_searchDisplayLoadingFooterView.bounds) - 0.5;        UIView *bottomLine = [[UIView alloc]initWithFrame:lineFrame];        bottomLine.backgroundColor = [UIColor colorWithHexString:@"0xdddddd"];                [_searchDisplayLoadingFooterView addSubview:topLine];        [_searchDisplayLoadingFooterView addSubview:bottomLine];    }        return _searchDisplayLoadingFooterView;}

9:百度坐標跟火星坐標相互轉換

//百度轉火星坐標+ (CLLocationCoordinate2D )bdToGGEncrypt:(CLLocationCoordinate2D)coord{    double x = coord.longitude - 0.0065, y = coord.latitude - 0.006;    double z = sqrt(x * x + y * y) - 0.00002 * sin(y * M_PI);    double theta = atan2(y, x) - 0.000003 * cos(x * M_PI);    CLLocationCoordinate2D transformLocation ;    transformLocation.longitude = z * cos(theta);    transformLocation.latitude = z * sin(theta);    return transformLocation;}//火星坐標轉百度坐標+ (CLLocationCoordinate2D )ggToBDEncrypt:(CLLocationCoordinate2D)coord{    double x = coord.longitude, y = coord.latitude;        double z = sqrt(x * x + y * y) + 0.00002 * sin(y * M_PI);    double theta = atan2(y, x) + 0.000003 * cos(x * M_PI);        CLLocationCoordinate2D transformLocation ;    transformLocation.longitude = z * cos(theta) + 0.0065;    transformLocation.latitude = z * sin(theta) + 0.006;        return transformLocation;}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩av综合精品| 久久久久久欧美| 欧美亚洲国产成人精品| 亚洲精品视频免费| 欧美高清视频一区二区| 538国产精品一区二区免费视频| 97在线看免费观看视频在线观看| 亚洲欧美中文另类| 久久久久久久爱| 国产精品麻豆va在线播放| 午夜精品久久久久久久久久久久| 91九色精品视频| 亚洲一区二区久久久| 日韩av一区二区在线观看| 久久综合久久美利坚合众国| 2018中文字幕一区二区三区| 国产精品日韩在线一区| 最近中文字幕mv在线一区二区三区四区| 疯狂做受xxxx高潮欧美日本| 久久青草精品视频免费观看| 欧美日韩国产在线看| 欧美理论电影在线观看| 国产精品久久久久av免费| 欧美一区三区三区高中清蜜桃| 国产精品手机播放| 亚洲黄色www网站| 成人激情综合网| 亚洲精美色品网站| 久久香蕉国产线看观看网| 欧美日韩另类在线| 欧美人成在线视频| 国产亚洲日本欧美韩国| 亚洲精品欧美日韩| 国产精品丝袜久久久久久不卡| 国产精品精品一区二区三区午夜版| 久久大大胆人体| 欧美裸身视频免费观看| 91精品91久久久久久| 国产一区二区三区在线视频| 久久天天躁狠狠躁老女人| 久久精品视频va| 岛国视频午夜一区免费在线观看| 精品亚洲永久免费精品| 欧美极品在线播放| 国产一区二区香蕉| 97人人模人人爽人人喊中文字| 久久国产精品99国产精| 国内精品模特av私拍在线观看| 日韩精品视频在线播放| 青青在线视频一区二区三区| 亚洲欧美中文日韩v在线观看| 日本成人在线视频网址| 黑人与娇小精品av专区| 日韩精品免费视频| 国产日韩欧美成人| 日韩精品极品在线观看播放免费视频| 91久久综合亚洲鲁鲁五月天| 亚洲精品一区二区三区不| 中文字幕日韩有码| 亚洲国产精品一区二区久| 一区二区三区亚洲| 中文精品99久久国产香蕉| 亚洲第一精品自拍| 亚洲网站在线看| 亚洲国产精品热久久| 亚洲xxxx视频| 欧美激情欧美激情在线五月| 国产精品久久久久久久一区探花| 国内揄拍国内精品少妇国语| 国产精品直播网红| 亚洲一级一级97网| 欧美大片免费观看在线观看网站推荐| 91精品国产色综合久久不卡98| 亚洲欧美www| 国产精品第2页| 成人激情电影一区二区| 亚洲中国色老太| 欧美性极品xxxx做受| 中文字幕亚洲自拍| 日韩欧美高清视频| 一区二区在线视频播放| 国产精品激情av电影在线观看| 亚洲国产高潮在线观看| 97超碰色婷婷| 国产亚洲在线播放| 久久99精品久久久久久青青91| 91tv亚洲精品香蕉国产一区7ujn| 成人免费视频网址| 国产日韩欧美成人| 久久精品国产精品| 国产日韩欧美在线播放| 日本a级片电影一区二区| 国产亚洲精品久久| 亚洲字幕在线观看| 欧美午夜久久久| 美日韩精品免费观看视频| 亚洲国产精品久久久| 国内精品美女av在线播放| 精品亚洲一区二区三区在线播放| 久久久91精品国产一区不卡| 国产一区二区日韩精品欧美精品| 欧美性猛交xxxx免费看漫画| 激情亚洲一区二区三区四区| 91影视免费在线观看| 久久久极品av| 欧美在线不卡区| 亚洲天堂男人的天堂| 成人国产在线视频| 国产91热爆ts人妖在线| 亚洲第一区第一页| 亚洲一区二区三区乱码aⅴ| 亚洲va欧美va在线观看| 欧美激情aaaa| 欧美日韩亚洲精品一区二区三区| 亚洲人成自拍网站| 91精品久久久久久久久久久久久久| 欧美日韩美女在线观看| 91精品国产高清久久久久久| 日韩精品免费综合视频在线播放| 久久精品国产久精国产一老狼| 国产精品久久久久久婷婷天堂| 日韩av在线电影网| 国产啪精品视频| 日韩综合中文字幕| 国产精品视频区1| 日韩成人激情影院| 中文字幕精品—区二区| 欧美精品videofree1080p| 国产精品日韩在线播放| 国产一区二区香蕉| 精品视频在线播放| 久久国产精品网站| 日韩中文字幕网站| 欧美激情视频免费观看| 亚洲精品按摩视频| 国产欧美日韩精品在线观看| 久久网福利资源网站| 91精品视频在线免费观看| 性色av一区二区三区红粉影视| 亚洲欧美日韩中文视频| 一道本无吗dⅴd在线播放一区| 91久久精品日日躁夜夜躁国产| 欧美亚洲伦理www| 精品成人国产在线观看男人呻吟| 日本欧美国产在线| 欧美午夜宅男影院在线观看| 国产精品久久久久av| 日韩av最新在线| 国产一区二区三区精品久久久| 欧美在线激情视频| 中国china体内裑精亚洲片| 日韩精品在线电影| 亚洲自拍偷拍视频| 色偷偷88888欧美精品久久久| 91黑丝高跟在线| 77777少妇光屁股久久一区| 精品亚洲va在线va天堂资源站| 国产精品尤物福利片在线观看| 欧美视频二区36p| 伊人成人开心激情综合网| 国产亚洲一区精品| 九九热精品视频国产| 亚洲国产精品va在线看黑人动漫| 亚洲国产成人精品久久|