swift常用知识点总结

斗鱼重要页面架构

推荐
推荐页面框架

手游
手游页面框架

用到的主要技术如下:

一、懒加载

//1、模型懒加载
fileprivate lazy var amuseVM : AmuseVM = AmuseVM()
//2、视图懒加载
fileprivate lazy var menuView : MenuView = {
        let menuView = MenuView.menuView()
        menuView.frame = CGRect(x: 0, y: -kMenuViewH, width: kScreenW, height: kMenuViewH)//设置collectionView的-y,放置menuView
        return menuView
    }()

二、代理

//MARK : - 1、设置代理,里面包含传的视图和对应的索引
protocol  PageTitleViewDelegate :class{
    func pageTitleView(_ titleView : PageTitleView, selectedIndex index : Int)
}

class PageTitleView: UIView {
    //3.1声明一个delegate属性
    weak var delegate : PageTitleViewDelegate?
}
//4、在本类中处理代理方法。
delegate?.pageTitleView(self, selectedIndex: currentLabelIndex)

//5、-对外公开的操作FUNC,1、用于homevc作为pagetitleview的代理,再由homevc调用到这里
extension PageContentView{
    func setCurrentIndex(currentIndex : Int){
        isForbidScrollDelegate = true
        let offsetX = CGFloat( currentIndex) * collectionView.frame.width
        collectionView.setContentOffset(CGPoint(x:offsetX,y:0), animated: false)
    }
}

三、抽取基类

1、UI方面:对于通用的动画、视图等,我们可以抽取出来一个基类,然后让其余视图继承该基类,这样就节省了很多代码。比如推荐和手游页面的下半部分都是一样的,所以我们抽取出一个基类,让两者继承此基类。然后分别在推荐和手游页面添加相应的视图即可。
2、Model方面:为了区分不同页面的Model数据,我们为每个页面创建对应的Model,如果各个页面的Model中的参数名有大量相同的数据,那么我们就可以抽取出来相同的部分来作为一个基类。其余类继承自该类,不同的参数在子类中分别定义,这样更加清晰明了。

四、xib设置视图

1、对视图进行圆角设置
在User Defined Runtime Attributes中的Key Path中添加如下两个值。

layer.cornerRadius = 20
layer.masksToBounds = true

设置图
2、图片显示问题
在TabBar上显示图片的时候,我们会发现,图片为蓝色,却不显示本来的颜色,这是因为图片的默认设置为Default,我们需要改成Original Image模式,这样的话就会显示图片的原图像。
设置图片原色

项目链接:https://github.com/caiqingchong/DouYu

猜你喜欢

转载自blog.csdn.net/xiaoxiaocode/article/details/80326727