iOS日常開發(fā) Tips

一. 關(guān)于 info.plist 的國際化

info.plist 里面通常會添加【功能權(quán)限使用】相關(guān)的說明施逾,因此 info.plist 也需要國際化身笤。如何操作呢苛坚?

  1. 新建一個 .strings文件份汗,命名為 InfoPlist.strings(文件名必須是這個芯丧!文件名必須是這個腔彰!文件名必須是這個叫编!);
  2. 之后選中新建的 InfoPlist.strings 文件,點(diǎn)擊右側(cè) Inspector 面板中的 Localize... ;
  3. 然后添加要支持的語言霹抛;
  4. 分別添加功能權(quán)限的 key 對應(yīng)的文字說明 value搓逾,如下
NSCameraUsageDescription = "Take passport/ID card photos to upload";
NSPhotoLibraryUsageDescription = "Select passport/ID picture from photo album";

你也可以給 key 加上雙引號(親測),像下面這樣

"NSCameraUsageDescription" = "Take passport/ID card photos to upload";
"NSPhotoLibraryUsageDescription" = "Select passport/ID picture from photo album";

功能權(quán)限對應(yīng)的 key 可以通過以下方式獲得杯拐,如圖


Screen Shot 2021-12-07 at 18.10.28.png

實踐過程中遇到的問題

  1. 我們工程有兩個 target霞篡,所以建了兩個 plist 文件世蔗。關(guān)于這兩個 plist 文件,一開始我以為需要分別進(jìn)行國際化朗兵,所以建了兩個不同的 .strings 文件:InfoPlist.strings 和 AbroadInfoPlist.strings污淋。調(diào)試我一直使用的是 AbroadInfoPlist.strings 對應(yīng)的 target,導(dǎo)致怎么調(diào)試余掖、更改都不行寸爆。網(wǎng)上資料難道都錯了?究竟哪里不對了盐欺? 心里是萬x駝奔騰赁豆!后來才發(fā)現(xiàn)名稱必須得是 InfoPlist.strings。不過一下午的時間差不多都過去了冗美!F...ck !
  2. 選中 info.plist 時右側(cè)面板也有 Localize... 的選項魔种,我也懷疑是不是通過這里進(jìn)行 info.plist 的初始化。后面發(fā)現(xiàn)不行粉洼,info.plist 會分別生成對應(yīng)語言的版本放到不同的 .lproj 文件(en.lproj 和 zh-Hans.lproj)中去节预。而 info.plist 需要在 build settings -> packaging -> info.plist File 中進(jìn)行路徑設(shè)置的。而且只能設(shè)置一個路徑漆改。所以這條路走不通心铃,具有迷惑性,也浪費(fèi)了我不少時間挫剑。

關(guān)于 info.plist 的國際化你也可以參考 http://www.reibang.com/p/eb968d10e656

二. AFNetworking 調(diào)試時報錯:Invalid parameter not satisfying: URLString

具體報錯如下

Terminating app due to uncaught exception 'NSInternalInconsistencyException',
 reason: 'Invalid parameter not satisfying: URLString'

起因
在做一個搜索界面去扣,上方有一個搜索欄。用戶輸入之后的值會拼接到 path 的后面樊破,如下

let path = "/api/search/\(inputText)"

后來發(fā)現(xiàn)是輸入的有空格愉棱,導(dǎo)致的這個問題。解決方法哲戚,將輸入框中輸入的 inputText 做如下處理

let tmpKey = inputText.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

然后再拼接到 path 的后面去請求奔滑,就不會報錯了!

這里有一個同樣的問題:http://www.reibang.com/p/e0da891a05da

三. 禁用 UITextView 的復(fù)制顺少,剪切朋其,選擇,全選等功能

// 繼承UITextView重寫這個方法
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// 返回NO為禁用脆炎,YES為開啟
    // 粘貼
    if (action == @selector(paste:)) { return NO; }
    // 剪切
    if (action == @selector(cut:)) { return NO; }
    // 復(fù)制
    if (action == @selector(copy:)) { return NO; }
    // 選擇
    if (action == @selector(select:)) { return NO; }
    // 選中全部
    if (action == @selector(selectAll:)) { return NO; }
    // 刪除
    if (action == @selector(delete:)) { return NO; }
    // 分享
    if (action == @selector(share)) { return NO; }

    return [super canPerformAction:action withSender:sender];
}

這里有一個討論:https://www.itranslater.com/qa/details/2325748042663724032

四. NSUserDefaults 支持存儲的數(shù)據(jù)類型

NSUserDefaults適合存儲輕量級的本地數(shù)據(jù)梅猿。支持存儲的數(shù)據(jù)類型有:NSNumber(NSInteger、float秒裕、double)袱蚓、NSString、NSDate几蜻、NSArray喇潘、NSDictionary体斩、BOOL。

五. Xcode 真機(jī)調(diào)試報錯 Please reconnect the device

反復(fù)的重新連接手機(jī)颖低,但就是運(yùn)行報錯絮吵。

具體報錯如下:
Failed to prepare device for development.
If you are certain that Xcode supports development on this device, try disconnecting and reconnecting the device.

解決方案:
重啟手機(jī)!3佬肌源武!
重啟大法就是好,能解決很多疑難雜癥想幻!

六. App Store connect 中填寫聯(lián)系信息報 "此欄無效" 的錯誤

20201023093130172.png

解決方法:
大 11 位電話號碼前加地區(qū)號粱栖,像這樣:+86-136xxxxxxxx

七. 如何取消 UIScrollView 的彈簧效果

scrollView.bounces = NO;

八、swift:Cannot convert value of type 'ArraySlice<UInt8>' to specified type '[UInt8]'

20210412151608338.png

解決方案:Array(arr[2…<arr.count])

20210412152353449.png

九脏毯、CUICatalog: Invalid asset name supplied

調(diào)試面板打印了許多如上所示的信息闹究。
原因:使用[UIImage imageNamed:] 時,圖片不存在或者傳入的圖片名為nil.

十食店、準(zhǔn)確計算 UILabel 文本內(nèi)容的高度

開發(fā)過程中渣淤,在使用 boundingRectWithSize:方法計算字符串的行高時,發(fā)現(xiàn)由于文本內(nèi)容是英文吉嫩,計算出來的行高比實際顯示的要屑廴稀(中文可能沒有這個問題)。經(jīng)過后來揣摩觀察發(fā)現(xiàn)是由于英文單詞的換行是按照 NSLineBreakByWordWrapping方式進(jìn)行導(dǎo)致的自娩,按照 NSLineBreakByCharWrapping 就沒有問題用踩。

如下圖所示,藍(lán)框右則的文本由于按單詞換行導(dǎo)致沒有頂格顯示

20211224-130909.jpeg

解決方案:借助 NSMutableParagraphStyle 進(jìn)行計算

示例代碼如下

let str = attributedText.string
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byWordWrapping
// 加個換行符防止 str 不是分段落的文本內(nèi)容忙迁,如果 str 不是分段落的文本內(nèi)容下面的計算方式就無效
let tmpStr = "\(str)\n"
let tmpRect = tmpStr.boundingRect(with: CGSize(width: screenW - 32.0, height: CGFloat.infinity), options: .usesLineFragmentOrigin, attributes: [.font: font, .paragraphStyle: paragraphStyle], context: nil)
let height: CGFloat = ceil(tmpRect.height) + 1

問題完美解決F瓴省!姊扔! 學(xué)會了嗎惠奸!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市恰梢,隨后出現(xiàn)的幾起案子佛南,更是在濱河造成了極大的恐慌,老刑警劉巖嵌言,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗅回,死亡現(xiàn)場離奇詭異,居然都是意外死亡呀页,警方通過查閱死者的電腦和手機(jī)妈拌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門拥坛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓬蝶,“玉大人尘分,你說我怎么就攤上這事⊥璺眨” “怎么了培愁?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缓窜。 經(jīng)常有香客問我定续,道長,這世上最難降的妖魔是什么禾锤? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任私股,我火速辦了婚禮,結(jié)果婚禮上恩掷,老公的妹妹穿的比我還像新娘倡鲸。我一直安慰自己,他們只是感情好黄娘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布峭状。 她就那樣靜靜地躺著,像睡著了一般逼争。 火紅的嫁衣襯著肌膚如雪优床。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天誓焦,我揣著相機(jī)與錄音胆敞,去河邊找鬼。 笑死杂伟,一個胖子當(dāng)著我的面吹牛竿秆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稿壁,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼幽钢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了傅是?” 一聲冷哼從身側(cè)響起匪燕,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喧笔,沒想到半個月后帽驯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡书闸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年尼变,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫌术,死狀恐怖哀澈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情度气,我是刑警寧澤割按,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站磷籍,受9級特大地震影響适荣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜院领,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一弛矛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧比然,春花似錦汪诉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拟烫,卻和暖如春该编,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硕淑。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工课竣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人置媳。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓于樟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拇囊。 傳聞我的和親對象是個殘疾皇子迂曲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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