iOS開發—技巧總結(一)
今天心血來潮看了看幾天前收藏的別人家的程式碼,學到一些小技巧,迫不及待想總結一下,以備不時之需。
分享一個原作者的部落格地址: http://www.jianshu.com/p/6decbc69c197正如作者所說的這個Demo裡面有很多好東西值得學習哦!
First Tip
CGAffineTransformIdentity
先粘兩段程式碼:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[UIView animateWithDuration:1 animations:^{
self.tabBarController.tabBar.transform = CGAffineTransformMakeTranslation(0, 49);
}];
}
上面是 ScrollView 的代理方法,當將要開始滑動 tableview 的時候平移 tabBar,我建議大家可以普及一下關於 CGAffineTransform
的知識,還是蠻有用的。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[UIView animateWithDuration:1.0 delay:0.8 options:UIViewAnimationOptionOverrideInheritedCurve animations:^{
self.tabBarController.tabBar.transform = CGAffineTransformIdentity;
} completion:nil];
}
上面一段程式碼時已經結束滑動 tableview 的時候所做的動畫,重點就是這行程式碼 self.tabBarController.tabBar.transform = CGAffineTransformIdentity;
將 tabBar 恢復到原始咩有 CGAffineTransform
執行過的狀態,也就是讓View回到原始狀態。
關於 View.transform = CGAffineTransformIdentity .
如果我們在為一個view設定了多個CGAffineTransform, 那麼每一個CGAffineTransform都以在上一個CGAffineTransform執行完後的位置的center作為參照點執行的.
如果我們在每一個CGAffineTransform執行前加一句:View.transform = CGAffineTransformIdentity
那麼會先把view恢復到原始的沒有CGAffineTransform執行過得狀態, 然後再執行CGAffineTransform.
這樣就相當於, 每一個CGAffineTransform執行前, view都會先歸位. 然後再執行. 所以沒有CGAffineTransform都是以view的原始位置為參考, 互不影響.
我們也可以在進行了一系列CGAffineTransform後 通過View.transform = CGAffineTransformIdentity 來讓view回到原始狀態
原文地址:http://www.dahuangphone.com/dv_rss.asp?s=xhtml&boardid=8&id=274&page=2
Second Tip
拖動 scollview 過程中實現漸變效果
來獻上程式碼:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIColor *color = [UIColor brownColor];
CGFloat offsetY = scrollView.contentOffset.y;
if (offsetY > 0) {
CGFloat alpha = 1 - ((64 - offsetY) / 64);
if (alpha>1) {
alpha = 1;
}
_topBgView.backgroundColor = [color colorWithAlphaComponent:alpha];
} else {
_topBgView.backgroundColor = [color colorWithAlphaComponent:0];
}
}
在拖動 scrollView 的過程中,均勻改變 _topBgView
的背景色,很簡單的實現思路,但有兩點值得一提:
-
CGFloat alpha = 1 - ((64 - offsetY) / 64);
該行程式碼用來實現透明度的均勻變化 -
_topBgView.backgroundColor = [color colorWithAlphaComponent:alpha];
中的colorWithAlphaComponent
方法返回的是新增透明度後的顏色
Third Tip
當一個 tableview 的headerView 或footerView 有點選載入更多更能的時候,可以在 tableview 的代理方法實現 - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
方法
下面方法是點選tableview 每個section 的 headerview 時載入更多的資訊
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
MGHeadView *sectionHeadView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headViewIdentifier];
MGSectionModel *sectionModel = self.sectionDataSources[section];
sectionHeadView.model = sectionModel;
sectionHeadView.expandCallback = ^(BOOL isExpanded){
[tableView reloadSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationFade];
};
return sectionHeadView;
}
相關文章
- Vue 開發技巧總結Vue
- iOS藍芽Mesh開發總結一iOS藍芽
- 小程式開發技巧總結
- Web APP開發技巧總結WebAPP
- iOS 基礎開發技巧 (一)iOS
- webapp開發技巧總結(share)WebAPP
- 史丹佛iOS Swift開發公開課總結(一)iOSSwift
- iOS開發經驗總結iOS
- 我開發中總結的小技巧
- Objective-C開發使用技巧總結Object
- 平時收集的一些前端開發技巧總結前端
- iOS開發經驗總結2iOS
- iOS開發經驗總結3iOS
- iOS語音提醒開發總結iOS
- iOS 開發小技巧iOS
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- iOS藍芽Mesh開發總結二iOS藍芽
- PhotosKit開發總結(一)
- iOS 開發的一些小技巧篇(1)iOS
- iOS 開發的一些小技巧篇(2)iOS
- iOS 開發的一些小技巧篇(3)iOS
- iOS開發中的技巧iOS
- iOS開發奇淫技巧iOS
- FFmpeg iOS 音訊開發的小總結iOS音訊
- iOS開發之Runtime常用示例總結iOS
- (轉載)ios開發知識總結 — 下iOS
- iOS開發總結之程式碼規範iOS
- mac開關機技巧總結Mac
- 提高Web前端開發技能的優化技巧總結!Web前端優化
- Git 的基本操作、開發流程、實用技巧總結Git
- iOS開發小技巧合集iOS
- iOS 與 JS 互動開發知識總結iOSJS
- 讀《CSS揭祕》總結一超實用的專案開發技巧CSS
- iOS面試題總結(一)iOS面試題
- iOS一週總結(二)iOS
- 我在阿里做開發的高效打工技巧總結阿里
- iOS 小技巧總結,絕對有你想要的iOS
- iOS開發程式猿必備技巧iOS