swif开发之--协议的使用
以前在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)
}
效果如下:

仅做记录
swif开发之--协议的使用的更多相关文章
- usdt钱包开发,比特币协议 Omni 层协议 USDT
usdt钱包开发 比特币协议 -> Omni 层协议 -> USDT USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 I ...
- JMeter5.1开发Java协议接口脚本【待完成】
JMeter5.1开发Java协议接口脚本
- 个人微信开发API协议(转)
安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sd ...
- 【Win 10开发】协议-上篇:自定义应用协议
就像系统许多内置应用可以通过URI来启动(如ms-settings-bluetooth:可以打开蓝牙设置页),我们自己开发的应用程序,如果需要的话,可以为应用程序自定义一个协议.应用程序协议在安装时会 ...
- 【转】iOS 开发之协议protocal-代理传值delegate
原文网址:http://www.cnblogs.com/wzrong/p/3201938.html 刚开始做iOS开发的时候,对 protocol.delegate 的理解一直都是晕晕乎乎一知半解的状 ...
- Web开发——Http协议剖析
Http,即超文本传输协议,是建立在TCP/IP协议的基础上.在Web开发的过程中,Http协议是十分重要的,浏览器与服务器之间的交互就是基于Http协议的.Http协议如果展开全面讲解会有很多内容, ...
- .Net Framework 开发Http协议
一.Http的基本原理 1.HTTP协议的运作方式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTTP协议是基于请求/响应范式的.一个客户机与服务器建立连接后,发送一个请求 ...
- 浅谈iOS开发的协议(protocol)和代理(delegate)
协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现, ...
- iOS 开发之协议-代理传值
刚开始做iOS开发的时候,对 protocol.delegate 的理解一直都是晕晕乎乎一知半解的状态,不知道两个UIViewController之间怎么进行传值. 面试过几个童鞋,问道怎么用 del ...
随机推荐
- shell学习笔记之变量(一)
一.普通变量 1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们2.默认所有的变量都被看做字符串,并且以字符串存储3.变量区分大小写4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变 ...
- js 轮播插件
flexslider pc插件 个人用过 flickerplate 移动端插件 个人用过 个人觉得比较好的移动端插件 swiper http://www.swiper.com.cn/ 用过 个人觉 ...
- ffmpeg 批量转换swf为mp3
下了几个音乐居然都是swf格式,在网上找了一下没找到好用的转换工具,于是想到了ffmpeg. linux下可以直接安装ffmpeg #/bin/sh for f in *.swf do ffmpeg ...
- [转]关闭word进程
命名空间 :System.Diagnostics 以前在word的时候,经常碰到word进程产生一大堆,怕关错了,把用户自己打开的word也关闭,一直搞忽悠,今天上网花了10块钱,下了个文件,给我了一 ...
- ExtJs 常用小技巧备忘录
1. ExtJs 给fieldLabel与fieldInput添加样式{给Input标签加入图标}http://www.w3school.com.cn/cssref/pr_background.asp ...
- lvm 新建一个vg 逻辑卷 配置启动
fdisk /dev/sdb 格式 t 8e w vgcreate datavg /dev/sdb1lvcreate -L 999G -n lvdata datavgmkfs.xfs /dev/da ...
- iOS边练边学--UIPickerView和UIDatePicker的简单使用
一.点菜系统练习(UIPickerView) <1>UIPickerView的常用代理方法介绍 #pragma mark - <UIPickerViewDelegate> // ...
- 写给测试人员:不是所有的bug都需要修复
用户往往对产品中各种各样的bug抱怨不已,而测试人员往往认为自己的职责就是揪出这些所有的bug并把它们全都修复.然而,这是一个误区.微软卓越测试工程总监Alan Page近日撰文,再次解释了有哪些bu ...
- C语言 float、double数据在内存中的存储方式
float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...
- 关于Unity中UI中的RawImage节点以及制作地图滚动效果
一.贴图的Texture Type属性类型 Texture:会把贴图的大小转换为最相近的2的n次方,比如400X1369会转换为512X1024. Sprite 2D:是贴图的原始大小. 二.RawI ...