在iOS開發(fā)中經(jīng)常需要使用的或不常用的知識(shí)點(diǎn)的總結(jié),,幾年的收藏和積累(踩過(guò)的坑),。 一,、 iPhone Size
二,、 給navigation Bar 設(shè)置 title 顏色
三、 如何把一個(gè)CGPoint存入數(shù)組里
謝謝@bigParis的建議,,可以用NSValue進(jìn)行基礎(chǔ)數(shù)據(jù)的保存,,用這個(gè)方法更加清晰明確。
現(xiàn)在Xcode7后OC支持泛型了,,可以用NSMutableArray *array來(lái)保存,。 四、 UIColor 獲取 RGB 值
五,、 修改textField的placeholder的字體顏色,、大小
六、兩點(diǎn)之間的距離
七,、IOS開發(fā)-關(guān)閉/收起鍵盤方法總結(jié) 1,、點(diǎn)擊Return按扭時(shí)收起鍵盤
2、點(diǎn)擊背景View收起鍵盤(你的View必須是繼承于UIControl)
3,、你可以在任何地方加上這句話,,可以用來(lái)統(tǒng)一收起鍵盤
八、在使用 ImagesQA.xcassets 時(shí)需要注意 將圖片直接拖入image到ImagesQA.xcassets中時(shí),,圖片的名字會(huì)保留,。 這個(gè)時(shí)候如果圖片的名字過(guò)長(zhǎng),那么這個(gè)名字會(huì)存入到ImagesQA.xcassets中,,名字過(guò)長(zhǎng)會(huì)引起SourceTree判斷異常,。 九、UIPickerView 判斷開始選擇到選擇結(jié)束 開始選擇的,,需要在繼承UiPickerView,,創(chuàng)建一個(gè)子類,在子類中重載
當(dāng)[super hitTest:point withEvent:event]返回不是nil的時(shí)候,,說(shuō)明是點(diǎn)擊中UIPickerView中了,。 結(jié)束選擇的, 實(shí)現(xiàn)UIPickerView的delegate方法
當(dāng)調(diào)用這個(gè)方法的時(shí)候,,說(shuō)明選擇已經(jīng)結(jié)束了,。 十,、iOS模擬器 鍵盤事件 當(dāng)iOS模擬器 選擇了Keybaord->Connect Hardware keyboard 后,不彈出鍵盤,。 當(dāng)代碼中添加了
進(jìn)行鍵盤事件的獲取,。那么在此情景下將不會(huì)調(diào)用- (void)keyboardWillHide. 因?yàn)闆]有鍵盤的隱藏和顯示。 十一,、在ios7上使用size classes后上面下面黑色 使用了size classes后,,在ios7的模擬器上出現(xiàn)了上面和下面部分的黑色 可以在General->App Icons and Launch Images->Launch Images Source中設(shè)置Images.xcassets來(lái)解決。 十二,、設(shè)置不同size在size classes Font中設(shè)置不同的size classes,。 十三、線程中更新 UILabel的text
abel1 為UILabel,,當(dāng)在子線程中,,需要進(jìn)行text的更新的時(shí)候,可以使用這個(gè)方法來(lái)更新,。 其他的UIView 也都是一樣的,。 十四、使用UIScrollViewKeyboardDismissMode實(shí)現(xiàn)了Message app的行為 像Messages app一樣在滾動(dòng)的時(shí)候可以讓鍵盤消失是一種非常好的體驗(yàn),。然而,,將這種行為整合到你的app很難。幸運(yùn)的是,,蘋果給UIScrollView添加了一個(gè)很好用的屬性keyboardDismissMode,,這樣可以方便很多。 現(xiàn)在僅僅只需要在Storyboard中改變一個(gè)簡(jiǎn)單的屬性,,或者增加一行代碼,,你的app可以和辦到和Messages app一樣的事情了。 這個(gè)屬性使用了新的UIScrollViewKeyboardDismissMode enum枚舉類型,。這個(gè)enum枚舉類型可能的值如下:
以下是讓鍵盤可以在滾動(dòng)的時(shí)候消失需要設(shè)置的屬性: 十五,、報(bào)錯(cuò) “_sqlite3_bind_blob”, referenced from: 將 sqlite3.dylib加載到framework 十六、ios7 statusbar 文字顏色 iOS7上,,默認(rèn)status bar字體顏色是黑色的,,要修改為白色的需要在infoPlist里設(shè)置UIViewControllerBasedStatusBarAppearance為NO,然后在代碼里添加: [application setStatusBarStyle:UIStatusBarStyleLightContent]; 十七,、獲得當(dāng)前硬盤空間
十八,、給UIView 設(shè)置透明度,不影響其他sub views UIView設(shè)置了alpha值,,但其中的內(nèi)容也跟著變透明,。有沒有解決辦法? 設(shè)置background color的顏色中的透明度 比如:
設(shè)置了color的alpha,, 就可以實(shí)現(xiàn)背景色有透明度,,當(dāng)其他sub views不受影響給color 添加 alpha,,或修改alpha的值。
十九,、將color轉(zhuǎn)為UIImage
二十,、NSTimer 用法
在NSRunLoop 中添加定時(shí)器. 二十一、Bundle identifier 應(yīng)用標(biāo)示符 Bundle identifier 是應(yīng)用的標(biāo)示符,,表明應(yīng)用和其他APP的區(qū)別,。 二十二、NSDate 獲取幾年前的時(shí)間 eg. 獲取到40年前的日期
二十三,、iOS加載啟動(dòng)圖的時(shí)候隱藏statusbar 只需需要在info.plist中加入Status bar is initially hidden 設(shè)置為YES就好 二十四,、iOS 開發(fā),工程中混合使用 ARC 和非ARC Xcode 項(xiàng)目中我們可以使用 ARC 和非 ARC 的混合模式,。 如果你的項(xiàng)目使用的非 ARC 模式,,則為 ARC 模式的代碼文件加入 -fobjc-arc 標(biāo)簽,。 如果你的項(xiàng)目使用的是 ARC 模式,,則為非 ARC 模式的代碼文件加入 -fno-objc-arc 標(biāo)簽。 添加標(biāo)簽的方法:
二十五,、iOS7 中 boundingRectWithSize:options:attributes:context:計(jì)算文本尺寸的使用 之前使用了NSString類的sizeWithFont:constrainedToSize:lineBreakMode:方法,,但是該方法已經(jīng)被iOS7 Deprecated了,而iOS7新出了一個(gè)boudingRectWithSize:options:attributes:context方法來(lái)代替,。 而具體怎么使用呢,,尤其那個(gè)attribute
二十六、NSDate使用 注意 NSDate 在保存數(shù)據(jù),,傳輸數(shù)據(jù)中,,一般最好使用UTC時(shí)間。 在顯示到界面給用戶看的時(shí)候,,需要轉(zhuǎn)換為本地時(shí)間,。 二十七、在UIViewController中property的一個(gè)UIViewController的Present問(wèn)題 如果在一個(gè)UIViewController A中有一個(gè)property屬性為UIViewController B,,實(shí)例化后,,將BVC.view 添加到主UIViewController A.view上,如果在viewB上進(jìn)行 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);的操作將會(huì)出現(xiàn),,“ Presenting view controllers on detached view controllers is discouraged ” 的問(wèn)題,。 以為BVC已經(jīng)present到AVC中了,所以再一次進(jìn)行會(huì)出現(xiàn)錯(cuò)誤,。 可以使用
來(lái)解決,。 二十八、UITableViewCell indentationLevel 使用 UITableViewCell 屬性 NSInteger indentationLevel 的使用,, 對(duì)cell設(shè)置 indentationLevel的值,,可以將cell 分級(jí)別,。 還有 CGFloat indentationWidth; 屬性,設(shè)置縮進(jìn)的寬度,。 總縮進(jìn)的寬度: indentationLevel * indentationWidth 二十九,、ActivityViewController 使用AirDrop分享 使用AirDrop 進(jìn)行分享:
就可以彈出界面: 三十、獲取CGRect的height 獲取CGRect的height,, 除了 self.createNewMessageTableView.frame.size.height 這樣進(jìn)行點(diǎn)語(yǔ)法獲取,。 還可以使用CGRectGetHeight(self.createNewMessageTableView.frame) 進(jìn)行直接獲取。 除了這個(gè)方法還有 func CGRectGetWidth(rect: CGRect) -> CGFloat 等等簡(jiǎn)單地方法
三十一,、打印 %
三十二,、在工程中查看是否使用 IDFA allentekiMac-mini:JiKaTongGit lihuaxie$ grep -r advertisingIdentifier . grep: ./ios/Framework/AMapSearchKit.framework/Resources: No such file or directory Binary file ./ios/Framework/MAMapKit.framework/MAMapKit matches Binary file ./ios/Framework/MAMapKit.framework/Versions/2.4.1.e00ba6a/MAMapKit matches Binary file ./ios/Framework/MAMapKit.framework/Versions/Current/MAMapKit matches Binary file ./ios/JiKaTong.xcodeproj/project.xcworkspace/xcuserdata/lihuaxie.xcuserdatad/UserInterfaceState.xcuserstate matches allentekiMac-mini:JiKaTongGit lihuaxie$ 打開終端,到工程目錄中,, 輸入: grep -r advertisingIdentifier . 可以看到那些文件中用到了IDFA,,如果用到了就會(huì)被顯示出來(lái)。 三十三,、APP 屏蔽 觸發(fā)事件
三十四,、設(shè)置Status bar顏色 status bar的顏色設(shè)置: 如果沒有navigation bar, 直接設(shè)置 // make status bar background color
如果有navigation bar,, 在navigation bar 添加一個(gè)view來(lái)設(shè)置顏色,。// status bar color
三十五、NSDictionary 轉(zhuǎn) NSString
將dictionary 轉(zhuǎn)化為 NSData,, data 轉(zhuǎn)化為 string .
三十六,、iOS7 中UIButton setImage 沒有起作用 如果在iOS7 中進(jìn)行設(shè)置image 沒有生效。
那么說(shuō)明UIButton的 enable 屬性沒有生效是NO的,。 **需要設(shè)置enable 為YES,。**
三十七、User-Agent 判斷設(shè)備 UIWebView 會(huì)根據(jù)User-Agent 的值來(lái)判斷需要顯示哪個(gè)界面,。 如果需要設(shè)置為全局,,那么直接在應(yīng)用啟動(dòng)的時(shí)候加載。
@“iOS” 為添加的自定義,。 三十八,、UIPasteboard 屏蔽paste 選項(xiàng) 當(dāng)UIpasteboard的string 設(shè)置為@“” 時(shí),那么string會(huì)成為nil,。 就不會(huì)出現(xiàn)paste的選項(xiàng),。 三十九、class_addMethod 使用 當(dāng) ARC 環(huán)境下 class_addMethod([self class], @selector(resolveThisMethodDynamically), (IMP) myMethodIMP, “v@:”); 使用的時(shí)候@selector 需要使用super的class,,不然會(huì)報(bào)錯(cuò),。 當(dāng)MRC環(huán)境下 class_addMethod([EmptyClass class], @selector(sayHello2), (IMP)sayHello, “v@:”); 可以任意定義。但是系統(tǒng)會(huì)出現(xiàn)警告,忽略警告就可以,。 |
|