美文网首页switf
第二天2018-08-26

第二天2018-08-26

作者: RogueYBJ | 来源:发表于2018-08-26 16:04 被阅读0次

啊.......项目终于写完了!
继续学习switf
这么多天过去了
我的顺序都混乱了
好了
废话就不多说了
这次就先写个自定义UIView吧
1.新建一个类
2.继承UIView
3.实现init方法
4.配置UIView

import UIKit

class switfView: UIView {

    ///var(创建)一个UILabel
    var lab:UILabel?
    ///var(创建)一个UIButton
    var btn:UIButton?
    ///实现init方法()
    override init(frame: CGRect) {
        super.init(frame: frame)
        ///创建子试图的方法
        createUI()
    }
    ///创建子试图
    func createUI(){
        
        /**
         UILabel
         1、实例化
         2、设置属性
         3、添加视图
         */
        lab = UILabel()
        
        lab?.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
        lab?.backgroundColor = UIColor.red
        lab?.text = "我是switf"
        lab?.textColor = UIColor.black
        
        self.addSubview(lab!)
        
        /**
         UIButton
         1、实例化
         2、设置属性
         3、添加视图
         */
        btn = UIButton(type: .custom)
        
        btn?.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
        btn?.backgroundColor = UIColor.green
        btn?.setTitle("黑色", for: .normal)
        btn?.setTitle("红色", for: .selected)
        btn?.setTitleColor(UIColor.black, for: .normal)
        btn?.setTitleColor(UIColor.red, for: .selected)
        
        btn?.addTarget(self, action: #selector(btnAction(sender:)), for: .touchUpInside)
        
        self.addSubview(btn!)
    }
    //给btn添加按钮方法
    @objc func btnAction(sender:UIButton) {
        sender.isSelected = !sender.isSelected;
    }
    ///layoutSubviews方法重新布局
    override func layoutSubviews() {
        super.layoutSubviews()
        
        ///重新布局lab
        lab?.frame = CGRect(x: 0, y: 0, width: 100, height: 30);
        
        ///重新布局btn
        btn?.frame = CGRect(x: 0, y: 30, width: 100, height: 30)
        
    }
    //init方法后必须带的,意思是没有init编码器尚未实现
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

到这之后我们就完成了自定义的view
如果想要自定义其他的东西参考此用法
因为switf没有.h文件
所以就可以直接使用这个类
也就好比switf把所有的.h文件都放到.pch文件里了
下面我们在viewDidLoad()这个方法中调用这个类

let switfV = switfView(frame: CGRect(x: 0, y: 100, width: 200, height: 400))
switfV.backgroundColor = UIColor.orange
self.view.addSubview(switfV)

这就完成了!!!
上面写了btn添加了按钮和方法
那就在说一下方法的回调吧
一共有四种
1单例
2.代理
3.闭包
4.通知

在这我就写一下第二种吧(代理)
我们都知道代理在OC中用到的比较频繁
也相对比较严谨
首先要创建协议代理

import UIKit
//创建协议代理
protocol switfViewdelegates :NSObjectProtocol{
    //协议方法
    func btnFunc(btnStr:String)

}

//在这个类里面创建协议对象

class switfView: UIView {
    //var 协议对象
    var delegates:switfViewdelegates?
    //在刚才的点击方法中加入协议方法
    @objc func btnAction(sender:UIButton) {
        //传入的是按钮的title
        delegates?.btnFunc(btnStr: (sender.titleLabel?.text)!)
    }
}

然后回到需要调用到这个协议的类里面
在继承类的后面加这个协议名以“,“隔开

class ViewController: UIViewController ,switfViewdelegates{
    override func viewDidLoad() {
        //绑定协议
        switfV.delegates = self as?headerViewdelegates
    }
     //调用协议方法
     func btnFunc(btnStr: String) {
        print(btnStr)
    }
}

输出结果:
黑色

❤️
❤️
❤️
❤️
❤️
❤️
❤️❤️❤️❤️❤️❤️❤️

❤️❤️❤️❤️❤️❤️❤️
❤️&&&&&&&&&❤️
❤️&&&&&&&&&❤️
❤️&&&&&&&&&❤️
❤️&&&&&&&&&❤️
❤️&&&&&&&&&❤️
❤️❤️❤️❤️❤️❤️❤️

❤️&&&&&&&&&&❤️
&❤️&&&&&&&&❤️
&&❤️&&&&&&❤️
&&&❤️&&&&❤️
&&&&❤️&&❤️
&&&&&❤️❤️
&&&&&&❤️

❤️❤️❤️❤️❤️❤️❤️
❤️
❤️
❤️❤️❤️❤️❤️❤️❤️
❤️
❤️
❤️❤️❤️❤️❤️❤️❤️

相关文章

  • 2018-08-26

    2018-08-26 现在立刻马上 2018-08-26 20:53 · 字数 599 · 阅读 0 · 日记本 ...

  • 付出不亚于任何人的努力

    戴师傅 2018-08-26 2018-08-26 20:32 打开App (稻盛哲学学习会)打卡第122天 姓名...

  • 小程序学习第8天

    2018-08-26昨天没学,空白。

  • 2018-08-26

    2018-08-26 陈顺富简书作者 2018-08-26 09:28 打开App 部门:三分厂 岗位:真空常白班...

  • 2018-08-27

    【59号-张玉-如何学习读后总结】 2018-08-26 22:09 · 字数 594 · 阅读 2 · 日记本 ...

  • 2018-08-26

    2018-08-26 事件:今天参加以前同事孩子的婚礼。 感受:惊叹,感动。 对方:欣喜,开心,激动。 想法:时间...

  • 第二天2018-08-26

    啊.......项目终于写完了!继续学习switf这么多天过去了我的顺序都混乱了好了废话就不多说了这次就先写个自定...

  • L4-U1-2-Vocabulary2-Dialogue

    流利说 D60 2018-08-26 日 一、复习 Level4-Unit1-Part2*Learning- Vo...

  • 2018-08-27

    江苏万千工品金秀 万千工品金秀 2018-08-26 20:48 · 字数 155 · 阅读 11 · 日记本 姓...

  • 用正则表达式做日期格式化

    输出:2018-08-26 21:11:15可以输入其他的分隔符YYYY/MM/dd HH:mm:ss 201...

网友评论

    本文标题:第二天2018-08-26

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