日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS总结:项目中的各种小坑汇总

發布時間:2025/3/18 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS总结:项目中的各种小坑汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、字符串轉JSON

在網絡請求時,如果服務端返回的是字符串,那么就需要我們自己封裝一個類,將請求下來的字符串轉換成json對象,從而存入模型中。

注意: 字符串中如果含有一些特殊轉意符(如\n、\t等),需要先對字符串進行處理。

示例代碼如下:

?

+(NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{ if (jsonString == nil) {return nil; } jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\r" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\n" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\s" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\t" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\v" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\f" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\b" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\a" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\e" withString:@""]; NSData * jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError * err; NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if (err) {YSXLog(@"json解析失敗:%@",err);return nil; } return dic; }

?

二、圖片拉伸

UIImageView *rightImagV = [[UIImageView alloc]init]; UIImage* img=[UIImage imageNamed:@"tu_text_Values"];//原圖 UIEdgeInsets edge=UIEdgeInsetsMake(5, myScalWidth(100), 5,myScalWidth(30)); //UIImageResizingModeStretch:拉伸模式,通過拉伸UIEdgeInsets指定的矩形區域來填充圖片 //UIImageResizingModeTile:平鋪模式,通過重復顯示UIEdgeInsets指定的矩形區域來填充圖 img= [img resizableImageWithCapInsets:edge resizingMode:UIImageResizingModeStretch]; rightImagV.image = img; [rightImagV sizeToFit]; rightImagV.width = myScalWidth(73)+scoreL.width+myScalWidth(20); rightImagV.x = SCREEN_WIDTH - myScalWidth(10)-rightImagV.width; rightImagV.centerY = CGRectGetMidY(proV.frame); [topView addSubview:rightImagV]; scoreL.x = myScalWidth(83); scoreL.centerY = rightImagV.height*0.5; [rightImagV addSubview:scoreL];

?

三、Label文字自適應frame

方式一

推薦此方式,此方式能夠獲取高度,實現自動換行、行距設置

UILabel * infoLab=[[UILabel alloc] init]; // infoLab.text=self.infoText; infoLab.font=[UIFont systemFontOfSize:myScalFont(28)]; infoLab.textColor=RGB(102, 102, 102, 1); infoLab.numberOfLines=0; NSMutableAttributedString *infoStr = [HP_NString createAttributeStringWithText:self.infoText LineSpace:myScalHeight(22) andFont:infoLab.font andColor:infoLab.textColor]; infoLab.attributedText = infoStr; CGSize infoSize = [HP_NString sizeOfText:self.infoText withFont:infoLab.font andSize:CGSizeMake(bgView.valueOfW-myScalWidth(22)*2, 1000) andLineSpace:myScalHeight(22) andColor:infoLab.textColor]; infoLab.width=infoSize.width; infoLab.height=infoSize.height; infoLab.x=typeLab.valueOfX; infoLab.y=typeLab.valueOfBottomMargin+myScalHeight(24); [self.view addSubview:infoLab];

?

方式二

CGFloat detailInfoLabelX=CGRectGetMidX(questImageView.frame); CGFloat detailInfoLabelW=detailInfoView.width-detailInfoLabelX*2; UILabel * detailInfoLabel=[[UILabel alloc] init]; detailInfoLabel.numberOfLines=0; detailInfoLabel.text=@"啦啦啦啦啦啦啦啦啦啦啦啦啦啦啊啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啊啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啊啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦"; detailInfoLabel.textColor=RGB(102, 102, 102, 1); detailInfoLabel.font=[UIFont systemFontOfSize:myScalFont(20)]; CGSize detailSize=[detailInfoLabel.text sizeWithFont:detailInfoLabel.font constrainedToSize:CGSizeMake(detailInfoLabelW, MAXFLOAT) lineBreakMode:NSLineBreakByCharWrapping]; detailInfoLabel.x=detailInfoLabelX; detailInfoLabel.y=0; detailInfoLabel.width=detailSize.width; detailInfoLabel.height=detailSize.height; [detailInfoView addSubview:detailInfoLabel];

?

四、時間間隔一天

項目中的需求:控制彈窗彈出次數,要求每天彈出一次即可,寫一個類,方便調用

+(void)jumpToVC:(UIViewController *)myVC withSaveParam:(NSString *)saveParam withSaveDate:(NSDate *)saveDate withNavigationController:(UINavigationController *)nav{ //判斷參數是否保存 if (saveParam.length>0 && saveParam != nil) {//YYSXLog(@"參數已保存"); }else{//N//判斷時間是否保存if (saveDate != nil) {//Y//判斷是否超過24小時if ([[NSDate date] timeIntervalSinceDate:saveDate]/3600 >24) {//超過24小時 [nav pushViewController:myVC animated:YES];}else{YSXLog(@"沒有超過24小時");}}else{//N跳轉 [nav pushViewController:myVC animated:YES];} }}

調用時,由于“所依賴的界面”還沒加載完,所以有時不能成功彈出,可以適當延遲彈出時間1秒

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{EmailViewController * vc = [[EmailViewController alloc] init];[YSXJumpToVC jumpToVC:vc withSaveParam:[YSXUserInfo sharedYSXUserInfo].addEmail withSaveDate:[YSXUserInfo sharedYSXUserInfo].addEmailDate withNavigationController:self.navigationController]; });

?

五、兩個日期的比較

從服務器以字符串的形式返回兩個時間,要求比較兩者的大小

NSDateFormatter * df = [[NSDateFormatter alloc] init];[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];NSDate * dt1 = [[NSDate alloc] init];NSDate * dt2 = [[NSDate alloc] init];//簽到拿到的時間dt1 = [df dateFromString:[YSXUserInfo sharedYSXUserInfo].comentTimeStr1];//實時獲取時間dt2 = [df dateFromString:[YSXUserInfo sharedYSXUserInfo].comentTimeStr];NSComparisonResult result = [dt1 compare:dt2];if (result == NSOrderedDescending) {//dt1>dt2redView.hidden = NO;}else{redView.hidden = YES;}//當dt1大于dt2時,結果為 NSOrderedDescending //當dt1等于dt2時,結果為 NSOrderedSame //當dt1小于dt2時,結果為NSOrderedAscending

?

六、UIView添加陰影效果無效

給圓角化的view四周加陰影效果,結果搞半天沒搞出來,原來是我對view圓角化的時候,除了View.layer.cornerRadius的設置,后面總是習慣地加上View.layer.masksToBounds = YES,剪裁了陰影當然沒有了。

七、隱藏狀態欄

一般情況下我們創建界面的時候系統會預留20px空白給頂部狀態欄,但是這空白不好看呀,所以我們在對應的控制器里viewDidLoad方法里加上self.automaticallyAdjustsScrollViewInsets = NO,而[[UIApplication sharedApplication]setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];是將整個狀態欄給隱藏掉了,用戶體驗效果不好,這里并不提倡。在我處理狀態欄的時候發現automaticallyAdjustsScrollViewInsets的方法不起作用,經過上網查詢,最終解決了,原來控制器里我將scrollView作為了第一視圖, 只要scrollView的第一視圖身份取消,automaticallyAdjustsScrollViewInsets方法就奏效了。

OK,今天先總結這幾點,錯誤的地方,希望大神多多指點!???

轉載于:https://www.cnblogs.com/tylerzhang/p/5978067.html

總結

以上是生活随笔為你收集整理的iOS总结:项目中的各种小坑汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 艳妇臀荡乳欲伦交换在线播放 | 精品国产一区二区三区无码 | 别揉我奶头啊嗯一区二区 | 国内免费精品视频 | 天堂在线91 | 黄色免费在线网站 | 手机天堂网 | 黄色中文 | 亚洲欧美动漫 | 国产91高清 | 色综合天 | 日韩福利视频网 | 欧美黄色大片视频 | 欧美黄片一区二区三区 | 天天摸夜夜添狠狠添婷婷 | 懂色av一区二区夜夜嗨 | 亚洲精品久久久久久久久久久久久 | 九九热精品视频在线观看 | 超碰天堂 | 乱熟女高潮一区二区在线 | 内射一区二区三区 | 一区二区三区国产在线观看 | 精品伦一区二区三区 | 国产精品亚洲AV色欲三区不卡 | 韩国av中文字幕 | 日批黄色片 | 久久高清免费 | 福利在线免费视频 | 久久久久久久久久影院 | 精品女同一区二区三区 | 最新中文字幕一区 | 伊人精品久久 | www.成人免费| av免费看网址 | 精品久久中文 | 国产一伦一伦一伦 | 午夜视频免费在线 | 久久久青青 | 在线观看小视频 | 日本精品不卡 | 国产又好看的毛片 | 日韩精品欧美激情 | 成人黄网免费观看视频 | 91偷拍一区二区三区精品 | 国产欧美一区二区三区视频在线观看 | 欧美三级图片 | 性日本xxx| 欧美性天堂 | 风间由美一区二区 | 日韩 欧美 精品 | av 日韩 人妻 黑人 综合 无码 | 亚洲精品粉嫩小泬20p | 永久免费看mv网站入口亚洲 | 久久久久亚洲av成人毛片韩 | 激情文学亚洲色图 | 一二三四av | 国产黄站| 欧美少妇网 | 日韩精品视频一区二区 | 亚欧美在线 | 黄色二级毛片 | 亚洲成人777| 欧洲视频一区二区三区 | 美女露胸软件 | 欧美一区二区三区久久 | 亚洲大尺度av | 与子敌伦刺激对白播放的优点 | 在线观看日韩国产 | 亚洲天堂网站在线 | 久久一区二区电影 | 亚洲自拍在线观看 | 91三级视频 | 国产成人精品久久 | a√天堂网 | 精品久久久久久久久久久久久 | 国产一区二区三区18 | 狠狠干在线视频 | 人妻妺妺窝人体色www聚色窝 | 精品人妻互换一区二区三区 | 猛1被调教成公厕尿便失禁网站 | 国产成人+综合亚洲+天堂 | 欧美一级久久 | 佐佐木明希av在线 | 国产二区视频在线观看 | 精品欧美乱码久久久久久1区2区 | 永久免费毛片 | 国产国语亲子伦亲子 | 五月婷婷开心中文字幕 | av免费观看在线 | 日韩另类在线 | 成人妇女淫片aaaa视频 | 麻豆传媒网站在线观看 | 国产成人精品久久久 | 国精品无码人妻一区二区三区 | 男人天堂视频在线观看 | 亚洲欧美v| 国产伦精品一区二区三区网站 | 国产成人一区二区三区视频 | 四虎久久|