美文网首页
iOS开发笔记之代码设计思路_视图模型

iOS开发笔记之代码设计思路_视图模型

作者: iOS_朱益锋 | 来源:发表于2018-02-08 09:41 被阅读5次

简介: 利用范型对同一类的数据模型统一转换为同一种视图模型

定义协议

//让数据模型遵守这个协议
protocol ZYFText {
    var title: String?{get}
}

定义视图模型

class ZYFTextViewModel: NSObject {

    var title: String?

    private var font: UIFont

    private var minWidth: CGFloat

    private var edgeInsets: UIEdgeInsets

    private var stringWidth: CGFloat {
        guard let text = title else {
            return minWidth
        }
        return text.sizeWithFont(font).width
    }

    var viewWidth: CGFloat {
        let width = self.stringWidth + self.edgeInsets.left + self.edgeInsets.right
        return max(width, minWidth)
    }
    //利用范性,通过遵守ZYFText协议的数据模型,获取视图尺寸方面的数据
    init<T: ZYFText>(item: T, font: UIFont, minWidth: CGFloat, edgeInsets: UIEdgeInsets) {
        super.init()
        self.title = item.title
        self.font = font
        self.minWidth = minWidth
        self.edgeInsets = edgeInsets
        }
    }

viewController中的应用

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let minWidth: CGFloat = 60
        let font = UIFont.systemFont(ofSize: 15)
        let edgeInsets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
        let item = datasource[indexPath.row]
        let textModel = ZYFTextViewModel(item: item, font: font, minWidth: minWidth, edgeInsets: edgeInsets)
        return CGSize(width: textModel.viewWidth, height: 40)
    }

相关文章

  • iOS开发笔记之代码设计思路_视图模型

    简介: 利用范型对同一类的数据模型统一转换为同一种视图模型 定义协议 定义视图模型 viewController中的应用

  • iOS 之设计模式

    iOS 之设计模式 MVC 模型-视图-控制器模式,是iOS程序的主要构架。 M模型部分定义应用程序的数据引擎,负...

  • MVC

    MVC( 模型-视图-控制器,Model-View-Controller), 是iOS开发中频繁使用的一种设计模...

  • iOS开发/App安全/代码自动混淆<笔记>

    iOS开发/App安全/代码自动混淆<笔记> iOS开发/App安全/代码自动混淆<笔记>

  • iOS 模型-视图-控制器

    模型-视图-控制器(Model-View-Controller),简称MVC,是iOS开发中频繁使用的一种设计模式...

  • iOS开发笔记之代码设计思路_分层思想

    简介: 一个功能复杂的界面,即便将控件和工具类进行封装,视图控制器依旧达到了近2000行代码 层级划分 视图层 控...

  • 无标题

    MVC: MVC是iOS开发中的一种典型设计模式,M即模型(Model),V视图(View),C控制器(Contr...

  • UI常用的控件

    #iOS开发之UI篇#iOS开发之UI篇 #常用控件介绍1## #UI第09天:滚动视图# ##UIScrollV...

  • Python学习线路图 基础入门之Django篇

    Django是一个开发源代码的web应用框架,由Python写成,采用MVC软件设计模式,即:模型,视图,控制器。...

  • 设计模式

    1.描述一下iOS SDK中如何实现MVC的开发模式 MVC是模型、视图、控制开发模式。对于iOS SDK:所有的...

网友评论

      本文标题:iOS开发笔记之代码设计思路_视图模型

      本文链接:https://www.haomeiwen.com/subject/ulwzzxtx.html