- 为什么要模仿斗鱼?
- 为什么要使用Swift进行模仿?
- 苹果大力推广Swift,国外教学语言也已经完全使用Swift教学,这是未来的趋势。
- 今年语言排行榜上,Swift的使用量已经超过OC。
- Swift更快,更简洁,更安全,更优雅。
- 我技术很菜,如何开始?
- iOS大神why正在更新斗鱼的模仿教学,我也是抱着大腿走。
- 感谢why大神的教学!要上车的童鞋们赶紧了。
-
why大神的gitHub斗鱼源码:https://github.com/coderwhy/DouYuZB
- 本人gitHub斗鱼代码:https://github.com/Rain-dew/DouYuZhiBo
- 项目搭建:根控制器用TabViewController,每个自控制器嵌套导航,并且很多页面再嵌套pageViewController
- 首页技术
- 1 原控件的扩展-->首页右上角搜索按钮、扫一扫按钮
-
extension UIBarButtonItem { convenience init(imageName: String,hightImageName : String = "",size : CGSize = CGSize.zero) { // 1.创建UIButton let btn = UIButton() // 2.设置btn的图片 btn.setImage(UIImage(named: imageName),for: UIControlState()) if hightImageName != "" { btn.setImage(UIImage(named: hightImageName),for: .highlighted) } // 3.设置btn的尺寸 if size == CGSize.zero { btn.sizeToFit() } else { btn.frame = CGRect(origin: CGPoint.zero,size: size) } // 4.创建UIBarButtonItem self.init(customView : btn) } }
格式:extension : 扩展对象 convenience init() 重写构造函数,默认参数写法 : 字符串 = "" ,默认参数的好处:如果不需要这个参数则可以不填写,让方法更简洁、灵活。例如以上代码如果你不需要高亮图片,也不需要size,那么直接这样调用:
navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "logo")
2.pageController的封装
-
分为titleView和contentView两部分封装。
-
TitleView:待续
-
-