首页 > 其他分享 >swif开发之--协议的使用

swif开发之--协议的使用

时间:2023-08-22 15:38:04浏览次数:36  
标签:协议 scoreLab -- frame swif bestscore ScoreView score stype

以前在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:0,y:0,width:100,height:30)
    var stype:String!
    var score:Int = 0{
        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:16)
        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:50,y:80)
        score.changeScore(value: 0)
        self.view.addSubview(score)
        
        bestscore = ScoreView(stype:.best)
        bestscore.frame.origin.x = 170
        bestscore.frame.origin.y = 80
        bestscore.changeScore(value: 99)
        self.view.addSubview(bestscore)
    }

效果如下:

swif开发之--协议的使用_代理传值

仅做记录

 


作者:稻草人11223

标签:协议,scoreLab,--,frame,swif,bestscore,ScoreView,score,stype
From: https://blog.51cto.com/u_13188203/7190218

相关文章

  • ios开发之--UISearchDisplayController的简单使用
    控件就不介绍了,UISearchDisplayController就是把searbar和tableview结合到一块了,直接上代码:.h#import<UIKit/UIKit.h>@interfaceThirdViewController:UIViewController<UITableViewDelegate,UITableViewDataSource>{NSArray*_array;NSArray*_filterData;UI......
  • 国标GB28181视频平台EasyGBS国标平台添加针对H.265视频流的告警信息的具体操作流程
    EasyGBS国标视频云服务支持设备/平台通过国标GB28181协议注册接入,可实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。在EasyGBS平台中接入......
  • swift--动画效果
    一、for循环创建4*4个view,然后对立面的所有view进行动画,这里列集中动画的效果:1,旋转动画fortileinbackgrounds{//现将数字块大小职位原始尺寸的1/10tile.layer.setAffineTransform(CGAffineTransform(scaleX:0.1,y:0.1))......
  • swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
    声明几个类://动物类classAnimal{}//陆地动物类classterricole:Animal{}//海洋动物类classSeaAnimals:Animal{}1,is用来做类型检查letcat=terricole()letfish=SeaAnimals()letarr=[cat,fish]foranima......
  • ios开发之--pop到指定页面
    1推出到根视图控制器[self.navigationControllerpopToRootViewControllerAnimated:YES];2推出到指定的视图控制器 for(UIViewController*controllerinself.navigationController.viewControllers){if([controllerisKindOfClass:[AViewControllerclass]]){......
  • 代码简洁之道:对象转换神器MapStruct
    在我们日常开发的程序中,为了各层之间解耦,一般会定义不同的对象用来在不同层之间传递数据,比如xxxDTO、xxxVO、xxxQO,当在不同层之间传输数据时,不可避免地经常需要将这些对象进行相互转换。今天给大家介绍一个对象转换工具MapStruct,代码简洁安全、性能高,强烈推荐。MapStruct简介MapSt......
  • ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar
    更新到ios11,然后使用x-code9运行项目,发现tableview的-(CGFloat)tableView:(UITableView*)tableViewheightForHeaderInSection:(NSInteger)section方法不走,所以页面也华丽丽的变成了一排的cell,通过查看文档和资料,原来是ios11默认开启self-sizing,把这个属性关系即可,具体代码如下:sel......
  • 用案例带你认识决策树,解锁洞察力
    本文分享自华为云社区《【机器学习|决策树】利用数据的潜力:用决策树解锁洞察力》,作者:计算机魔术师。决策树1.1分类决策树是一种基于树形结构的分类模型,它通过对数据属性的逐步划分,将数据集分成多个小的决策单元。每个小的决策单元都对应着一个叶节点,在该节点上进行分类决......
  • ios开发之--NSString和NSArray互转
    将string字符串转换为array数组NSArray*array=[StrcomponentsSeparatedByString:@","];//分隔符逗号将array数组转换为string字符串 NSString*tempString=[mutableArraycomponentsJoinedByString:@","];//分隔符逗号作者:稻草人11223......
  • swift--触摸(UITouch)事件(点击,移动,抬起)
    触摸事件:UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁。表示触碰。UITouch对象能表明当前手指触碰的屏幕位置、状态,状态分为开始触碰、移动、离开。具体方法介绍如下:1.overridefunctouchesBegan(_touches:Set<UITouch>,withevent:UIEvent?)通知调用者当......