之前就说准备用Swift写一个项目练练手,于是就写了一个Swift版的百思不得姐,目前只完成了精华模块的功能,但是后续我会将所有的功能写完,也会记录每个细节及知识点
效果图:
接下来就一起分析这个项目,并实现了
1:整体架构一看,又是在玩TabBar,然后这个咋一看必须得自己搞一个,不然用系统的实现不了
关键代码:替换系统的
/**
* 处理TabBar 替换成自定义的
*/
self.setValue(XYTabBar(), forKeyPath: "tabBar")
然后就是在XYTabBar(UITabBar)这个类中添加中间那个大按钮 ,重新布局,
2:分析单独的精华模块,一个整体控制器(精华控制器),五个按钮,每个按钮对应一个单独子控制器,每个单独子控制器可以上下左右滚动,所以精华控制器中的UIScrollView就包含单独子控制器的TableView,
添加五个子控制器:
ChildVc(XYAllTableViewController(), title: "全部")
ChildVc(XYVoideTabController(), title: "视频")
ChildVc(XYVoiceTabController(), title: "声音")
ChildVc(XYImageTabController(), title: "图片")
ChildVc(XYtextTabController(), title: "段子")
<pre name="code" class="objc">func ChildVc(tabVc: UITableViewController, title: String){
tabVc.title = title;
addChildViewController(tabVc)
}
点击按钮时,滚动到对应的子控制器,也就是对应的界面
关键代码:
// 让scrollView滚动到对应的位置
var offset = self.scrollView.contentOffset;
offset.x = self.view.width * CGFloat(self.titleButtons.indexOfObject(titlebut))
self.scrollView.setContentOffset(offset, animated: true)
4:创建UIScrollView,实现代理方法
在代理方法中将子控制器的tableView添加到ScrollView中,
现在就大致完成了这个骨架,接下来就不需要在精华控制器中写代码了,在相应的子控制器中添加对应数据
今天就分析到这