swif开发之--协议的使用
2024-08-29 12:06:25
以前在oc构建的项目中,如果这个页面需要构建一些指定的页面,一般我会重新创建个集成与UIView的类,然后同时创建XXX.xib文件,然后直接在上面拖拽控件,非常快速,当然也可以手动布局!个人更喜欢可视化布局!
在swift下,其实实现的逻辑也是一样的,布局风格也相仿,里面加了一个代理传值,
具体代码如下:
1,新建一个集成与UIView的类
import UIKit //创建枚举
enum ScoreType{
case common //普通分数面板
case best //最高分数板
} //代理协议的使用
protocol ScoreViewProtocol{
func changeScore(value s:Int)
} class ScoreView: UIView,ScoreViewProtocol { var scoreLab:UILabel! let defaultFrame = CGRect(x:,y:,width:,height:)
var stype:String!
var score:Int = {
didSet{
//分数变化,标签内容也要变化
scoreLab.text = "\(String(describing: String(stype))):\(score)"
}
} //传入分数面板的类型,用于控制标签的显示
init (stype:ScoreType)
{
scoreLab = UILabel(frame:defaultFrame)
scoreLab.textAlignment = .center
super.init(frame:defaultFrame)
self.stype = (stype == .common ? "我的":"你的") backgroundColor = UIColor.orange
scoreLab.font = UIFont(name:"微软雅黑",size:)
scoreLab.textColor = UIColor.white
self.addSubview(scoreLab)
} required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
} //实现协议中的方法
func changeScore(value s:Int)
{
score = s
} }
2,在vc里面具体调用
var score:ScoreView!
var bestscore:ScoreView!
具体实现:
func initScoreView(){
score = ScoreView(stype:.common)
score.frame.origin = CGPoint(x:,y:)
score.changeScore(value: )
self.view.addSubview(score) bestscore = ScoreView(stype:.best)
bestscore.frame.origin.x =
bestscore.frame.origin.y =
bestscore.changeScore(value: )
self.view.addSubview(bestscore)
}
效果如下:
仅做记录
最新文章
- Ehcache BigMemory: 摆脱GC困扰
- (转)解决Android SDK Manager无法更新或下载太慢问题
- MySQL的分页
- thinkphp开发技巧经验分享
- Lua xavante WEB server实现xmlrpc服务器端
- ubuntu 12.04安装TP-LINK TL-WN725N v2
- Hibernate注解:一对一主键关联
- Media Player(APP)
- zabbix 启用分区表后需要关闭Housekeeper
- WEB网站性能优化
- markown编辑器截图粘贴预览,并将图片传至七牛云
- Unix/Linux中的grep命令(转)
- Linux centos ssh
- 2018-2019-2 实验二 Java面向对象程序设计
- [十一]基础数据类型之Character
- beamer插入图片的一些技巧
- 如何强制关闭LODOP或c-lodop已经弹出的预览窗口
- Centos6.8下卸载软件(以Mysql为例)
- exec与match方法的区别
- 对于目标识别的一些idea-传递特征的position而不是特征或特征图