eureka需要替换吗_iOS第三方库Eureka实现定制动画详解(八):怎么写一个定制的Row?...
发布日期:2021-06-24 12:46:57 浏览次数:3 分类:技术文章

本文共 2288 字,大约阅读时间需要 7 分钟。

86d74f1b2dccad3d238f4777fc2a90ca.png

我们打算写一个App中常用的显示用户头像的Row,仅此而已.

这只需3步!

其实一般来说,对于一些简单的Row我们可以将其中几步合并到一起,只需2甚至1步就可以,不过这里为了说明清楚,我们还是规规矩矩的将其分开.

第一步:创建一个Model

这个Model对应Row中的Value类型.创建UserLogo.swift文件,设置其为如下内容:struct UserLogo:Equatable{ var borderColor:UIColor? var image:UIImage?}func ==(lhs: UserLogo, rhs: UserLogo) -> Bool {  if lhs.image == nil,rhs.image == nil{ return true }  if lhs.image != nil || rhs.image != nil{ return false }  return lhs.image!.hash == rhs.image!.hash}

我们只需要一个遵守Equatable协议的结构即可(结构能搞定的还需要类吗?),因为我们后面需要修改用户头像以及头像头像边框的颜色,所以只要2个属性就可以.

第二步:创建Cell类

这个Cell自然需要一个界面.嗯,它一个xib文件.在Xcode中生成一个名为UserLogoCell,派生自UITableViewCell的类,同时勾选创建xib文件.

这样会创建2个文件:UserLogoCell.xib和UserLogoCell.swift.

我们首先来搞定界面!在IB中将Cell高度调整的大一些,然后在其中添加一个UIImageView,同时设置好autolayout:

44f537e9832696b02862e111723b7c13.png

现在打开UserLogoCell.swift文件,删除所有内容,然后输入以下代码:

import UIKitimport Eurekafinal class UserLogoCell:Cell,CellType{ override func update() { super.update() }  override func setup() { super.setup() }  required init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) }  required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }}

解释一下,Eureka中的所有Row必须派生自Cell类,设置对应Value的泛型类型;同时它还必须遵守CellType协议.至于Cell类和CellType到底是个神马东东,你现在可以不必深究,当然Eureka源代码都在那里,你随时可以研究哦.

f1fd65a8fce8c928a044292069f997bd.png

其中需要2个类初始化方法:一个是走走样子,另一个是必须的.幸运的是,你都不用关心它们.

而update()和setup()方法则分别对应于Row的刷新和创建.

接下来在UserLogoCell类中创建1个实例变量:

@IBOutlet weak var logoView:UIImageView!

别忘了在IB中绑定它哦.

现在回到setup()方法中,在super.setup()下方添加如下Row初始化代码:

selectionStyle = .nonelogoView.contentMode = .scaleAspectFilllogoView.clipsToBounds = true //指定Cell的高度,和IB中一致为妙.height = {return 198} logoView.layer.cornerRadius = logoView.bounds.height/2.0 if let borderColor = row.value?.borderColor{ logoView.layer.borderColor = borderColor.cgColor}else{ logoView.layer.borderColor = UIColor.gray.cgColor} logoView.layer.borderWidth = 5.0

好啦,现在到了最后一步:Row类!

第三步:创建Row类

在Xcode中新建一个名为UserLogoRow.swift的文件,当然这些文件名都是随意的,不过你要是不遵守规矩绝对不会666的

5c3f3e4b021f390bcc2af8e5c6c9592c.png

打开UserLogoRow.swift文件,将原有内容替换为如下内容:

import UIKitimport Eurekafinal class UserLogoRow: Row,RowType{  required init(tag: String?) { super.init(tag: tag) cellProvider = CellProvider(nibName: "UserLogoCell") }}

你没看错,初始化时需要找到对应xib文件.

你还有另外一种选择,就是不使用xib文件来处理Row界面,而是全部采用代码来处理.但在这里我不会提及,因为不想增加篇幅.如果有这方面需求的童鞋可以看Eureka中定制Row的例子.

好啦,我们定制的Row大功告成啦,下面我们看看怎么在自己的项目里使用它.

转载地址:https://blog.csdn.net/weixin_32823555/article/details/112228228 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:zb如何导出自己画的_次世代建模流程究竟是怎样的?看行业大佬如何给你细致剖析...
下一篇:amd一点也不yes_五年了,AMD终于超越英伟达

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月27日 23时45分07秒