01-iOS總結(jié):項(xiàng)目中的各種小坑匯總

這并不是我的第一篇史侣,在這之前我已經(jīng)在簡書上寫了5篇拴泌。。惊橱。蚪腐。文章算不上,只是做個記錄而已李皇,由于篇幅太小削茁,被我早早取消了亮相的資格宙枷,畢竟跟那些專職掉房、兼職的作家和文字愛好者相比,人家動輒幾千字的文稿慰丛,而我一個小小的iOS程序媛卓囚,上次寫作文還是高考的事兒??廢話不多說,說也沒墨水诅病,還是趕緊上干貨吧哪亿!

目錄

1.字符串轉(zhuǎn)JSON
2.圖片拉伸
3.Label文字自適應(yīng)frame
4.時間間隔24小時(這個之前有錯誤,已更正)
5.兩個日期的 比較
6.UIView添加陰影效果無效
7.隱藏狀態(tài)欄

一贤笆、字符串轉(zhuǎn)JSON

在網(wǎng)絡(luò)請求時蝇棉,如果服務(wù)端返回的是字符串,那么就需要我們自己封裝一個類芥永,來將請求下來的字符串轉(zhuǎn)換成json對象篡殷。,從而存入模型中埋涧。

***注意: 字符串中如果含有一些特殊轉(zhuǎn)意符(如\n板辽、\t等),需要先對字符串進(jìn)行處理棘催。

示例代碼如下:

+(NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{
if (jsonString == nil) {
    return nil;
}//    jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\\\" withString:@""];
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指定的矩形區(qū)域來填充圖片
    //UIImageResizingModeTile:平鋪模式醇坝,通過重復(fù)顯示UIEdgeInsets指定的矩形區(qū)域來填充圖
    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文字自適應(yīng)frame

Label文字自適應(yīng)frame,目前知道的有三種方式:

示例代碼如下:

方式一

推薦此方式呼猪,此方式能夠獲取高度画畅,實(shí)現(xiàn)自動換行、行距設(shè)置

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];
方式二
 detailLabel.text=correctM.remarkContent;  NSMutableAttributedString *attStr = [HP_NString createAttributeStringWithText:detailLabel.text LineSpace:myScalHeight(14) andFont:[UIFont systemFontOfSize:myScalHeight(23)] andColor:RGB(0, 0, 0, 1)];detailLabel.attributedText=attStr;size = [HP_NString sizeOfText:detailLabel.text withFont:[UIFont systemFontOfSize:myScalFont(23)] andSize:CGSizeMake(detailbgView.valueOfW - myScalWidth(20)*2, SCREEN_HEIGHT) andLineSpace:myScalHeight(14) andColor:RGB(0, 0, 0, 1)];detailLabel.textColor=RGB(0, 0, 0, 1);detailLabel.font=[UIFontsystemFontOfSize:myScalHeight(23)];detailLabel.frame = CGRectMake(myScalWidth(20), myScalHeight(55), detailbgView.valueOfW - myScalWidth(20)*2, size.height); detailbgView.height=size.height+myScalHeight(100);
方式三

推薦

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];

四郑叠、時間間隔24小時

??今天公眾號里有位大神給我留言指出這種做法只是間隔了24小時夜赵,并不能控制每天彈一次,我看了下確實(shí)寫的不嚴(yán)謹(jǐn)乡革,當(dāng)時上面說要求每天彈一次寇僧,想當(dāng)然的就覺得是24小時了摊腋,誤導(dǎo)了大家???這兒我暫時先改成間隔24小時,近期項(xiàng)目事情比較多嘁傀,還沒有時間完善判斷每天彈出的情況兴蒸,過幾天再更新哈

示例代碼如下:

+(void)jumpToVC:(UIViewController *)myVC withSaveParam:(NSString *)saveParam withSaveDate:(NSDate *)saveDate withNavigationController:(UINavigationController *)nav{
//判斷參數(shù)是否保存
if (saveParam.length>0 && saveParam != nil) {//Y
    YSXLog(@"參數(shù)已保存");
}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跳轉(zhuǎn)
        
      [nav pushViewController:myVC animated:YES];
    }
}}

調(diào)用時,由于“所依賴的界面”還沒加載完细办,所以有時不能成功彈出橙凳,可以適當(dāng)延遲彈出時間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];
});

五、兩個日期的比較

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

示例代碼如下:

    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];
        //實(shí)時獲取時間
        dt2 = [df dateFromString:[YSXUserInfo sharedYSXUserInfo].comentTimeStr];
        NSComparisonResult result = [dt1 compare:dt2];
        if (result == NSOrderedDescending) {//dt1>dt2
            redView.hidden = NO;
        }else{
            redView.hidden = YES;
        }
  • 當(dāng)dt1大于dt2時岛啸,結(jié)果為 NSOrderedDescending
  • 當(dāng)dt1等于dt2時,結(jié)果為 NSOrderedSame
  • 當(dāng)dt1小于dt2時茴肥,結(jié)果為NSOrderedAscending

六坚踩、UIView添加陰影效果無效

前幾天做功能的時候,給圓角化的view四周加陰影效果瓤狐,結(jié)果搞半天沒搞出來瞬铸,原來是我對view圓角化的時候,除了View.layer.cornerRadius的設(shè)置础锐,后面總是習(xí)慣地加上View.layer.masksToBounds = YES嗓节,剪裁了陰影當(dāng)然沒有了??這么粗心,程序媛當(dāng)?shù)轿疫@個地步也是醉了皆警。拦宣。。

七耀怜、隱藏狀態(tài)欄

一般情況下我們創(chuàng)建界面的時候系統(tǒng)會預(yù)留20px空白給頂部狀態(tài)欄恢着,但是這空白不好看呀,所以我們在對應(yīng)的控制器里viewDid方法里加上self.automaticallyAdjustsScrollViewInsets = NO财破,而[[UIApplication sharedApplication]setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];是將整個狀態(tài)欄給隱藏掉了掰派,用戶體驗(yàn)效果不好,這里并不提倡左痢。在我處理狀態(tài)欄的時候發(fā)現(xiàn)automaticallyAdjustsScrollViewInsets的方法不起作用靡羡,經(jīng)過上網(wǎng)查詢,最終解決了俊性,原來控制器里我將scrollView作為了第一視圖略步, 只要scrollView的第一視圖身份取消,automaticallyAdjustsScrollViewInsets方法就奏效了定页,具體什么原因?qū)е碌奶吮。椰F(xiàn)在還沒弄清楚??

好了,今天就記錄這么多吧典徊,本人現(xiàn)在還是iOS小菜鳥一枚杭煎,道行尚淺恩够,如有錯誤希望各位同行大神善意指出。如果覺得寫的不那么辣眼睛羡铲,那就動動手指給俺點(diǎn)個蜂桶,小女子在此謝過, 本文會不定期更新哦??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末也切,一起剝皮案震驚了整個濱河市扑媚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雷恃,老刑警劉巖疆股,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異褂萧,居然都是意外死亡押桃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門导犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羡忘,你說我怎么就攤上這事谎痢。” “怎么了卷雕?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵节猿,是天一觀的道長。 經(jīng)常有香客問我漫雕,道長滨嘱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任浸间,我火速辦了婚禮太雨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魁蒜。我一直安慰自己囊扳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布兜看。 她就那樣靜靜地躺著锥咸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪细移。 梳的紋絲不亂的頭發(fā)上搏予,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音弧轧,去河邊找鬼雪侥。 笑死球涛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的校镐。 我是一名探鬼主播亿扁,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸟廓!你這毒婦竟也來了从祝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤引谜,失蹤者是張志新(化名)和其女友劉穎牍陌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體员咽,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毒涧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贝室。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片契讲。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滑频,靈堂內(nèi)的尸體忽然破棺而出捡偏,到底是詐尸還是另有隱情,我是刑警寧澤峡迷,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布银伟,位于F島的核電站,受9級特大地震影響绘搞,放射性物質(zhì)發(fā)生泄漏彤避。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一夯辖、第九天 我趴在偏房一處隱蔽的房頂上張望琉预。 院中可真熱鬧,春花似錦楼雹、人聲如沸模孩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榨咐。三九已至,卻和暖如春谴供,著一層夾襖步出監(jiān)牢的瞬間块茁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留数焊,地道東北人永淌。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像佩耳,于是被迫代替她去往敵國和親遂蛀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,114評論 25 707
  • 很喜歡徐大榮尹明珠這一對干厚,之前說了李滴,他們的虐更戳我的心。 明明都走過了生死蛮瞄,卻跨不過心里那道坎兒所坯。因?yàn)閻壑鴮Ψ剑?..
    小離的私家筆記閱讀 1,516評論 0 1
  • #致燈燈共勉# 感謝能遇到和我一樣挂捅,無論遇到經(jīng)歷過什么芹助,都仍愿意相信簡單和善良的你~我們都選擇踏實(shí)而認(rèn)真的活著,盡...
    小刷子閱讀 216評論 0 0
  • 昨晚做個夢闲先,夢到和G吵架状土,早上吃飯跟G提起,G想知道因?yàn)槭裁闯臣芏伲臆P躇了半天声诸,最后和G說,我夢到Z很開心的和你從...
    半塊青金石閱讀 208評論 0 1