有很長(zhǎng)一段時(shí)間沒(méi)有更新自己的blog了,期間有春節(jié)假期、春節(jié)假期之前的忙、春節(jié)假期之后的懶,不得不承認(rèn)自己是個(gè)不折不扣的懶癌晚期患者??。其實(shí)年后,在工作上的任務(wù)也有所調(diào)整的,之前有很長(zhǎng)一段時(shí)間是做iOS SDK的封裝,及底層移植層的開(kāi)發(fā),年后不久組老大啟動(dòng)了我們團(tuán)隊(duì)自己的APP開(kāi)發(fā)計(jì)劃(我們團(tuán)隊(duì)是負(fù)責(zé)GIS地圖引擎開(kāi)發(fā)團(tuán)隊(duì))。我也著手開(kāi)始開(kāi)發(fā)APP,期間組內(nèi)招了一個(gè)iOS小伙伴,這個(gè)APP的iOS端也就由我們兩人負(fù)責(zé)開(kāi)發(fā)。
在開(kāi)發(fā)過(guò)程中,我也在不斷的梳理自己在iOS開(kāi)發(fā)方面的技術(shù)點(diǎn),并打算定期更新自己的博客,與讀者一起分享在這APP開(kāi)發(fā)過(guò)程中的一些坑。
List
UILabel的自動(dòng)換行:
_addressLabel.numberOfLines = 0;
_addressLabel.lineBreakMode = NSLineBreakByWordWrapping;
計(jì)算字符串高度:
UILabel 方法
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize;
UIView 方法
- (CGSize)sizeThatFits:(CGSize)size;
NSString 方法
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSString *,id> *)attributes context:(NSStringDrawingContext *)context;
UITableView頂格,去掉最上面一行的間隔
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
XCode9 使用rename的時(shí)候,出現(xiàn) 'rename failed' 情況時(shí)
1.關(guān)閉XCode
2.進(jìn)入文件夾 ~/Library/Developer/Xcode/DerivedData/,刪除文件夾下的所有文件
3.啟動(dòng)XCode
或者可以直接用終端輸入:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
XCode重啟即可
UICollectionView數(shù)據(jù)不夠時(shí),不能豎向滑動(dòng)
UICollectionView 的屬性bounces 默認(rèn)的水平方向的滑動(dòng)設(shè)置,其實(shí)還有alwaysBounceVertical 和alwaysBounceHorizontal屬性,alwaysBounceHorizontal 和bounces 的效果一致,如果是豎向可以使用alwaysBounceVertical屬性
UICollectionView在一個(gè)frame 動(dòng)畫之后,調(diào)用setContentOffset 沒(méi)有作用,不能改變里面內(nèi)容的位置,這個(gè)時(shí)候,應(yīng)該把setContentOffset 方法也放入一個(gè)動(dòng)畫中去調(diào)用。
NSTimer的循環(huán)圈
調(diào)用NSTimer 的scheduledTimerWithTimeInterval: target: selector: userInfo: repeats: 來(lái)初始化一個(gè)NSTimer對(duì)象時(shí),有可能會(huì)產(chǎn)生循環(huán)引用??梢允褂胹cheduledTimerWithTimeInterval:repeats:block: 方法。
最后附上一個(gè)比較全的iOS 技能圖譜
