美文网首页
Swift 懒加载自定义视图-------(项目准备-学习5)

Swift 懒加载自定义视图-------(项目准备-学习5)

作者: 奔跑吧小蚂蚁 | 来源:发表于2019-03-17 11:27 被阅读0次

今天写的代码是通过懒加载的模式自定义视觉Navbar,代码一定存在不妥之处,并且处于一个简单的封装,后续我的思路是将navBar放在父类Controlle中,我们在写controller时可以直接加载这个NavBar进行加载,个人喜欢自定义navBar将系统的隐藏掉,因为系统的牵扯到全局个人不是很喜欢,直接上代码吧

效果图

navbar.png

简单调用代码

let navBar1 = NavBar.init(frame: CGRect(x: 0, y: 0, width: screen_width, height: navBar_height))
        self.view.addSubview(navBar1)
        navBar1.set_navType(navtype: Navtype.back)
        navBar1.set_title(title: "世界你好")
        navBar1.set_rightTitle(right_title: "保存")
        
        let navBar2 = NavBar.init(frame: CGRect(x: 0, y: 80, width: screen_width, height: navBar_height))
        self.view.addSubview(navBar2)
        navBar2.set_navType(navtype: Navtype.none)
        navBar2.set_title(title: "世界你好")
        navBar2.set_rightTitle(right_title: "保存")
        navBar2.set_leftTitle(left_title: "时间")
        
        
        let navBar3 = NavBar.init(frame: CGRect(x: 0, y: 160, width: screen_width, height: navBar_height))
        self.view.addSubview(navBar3)
        navBar3.set_navType(navtype: Navtype.none)
        navBar3.set_title(title: "世界你好")
        navBar3.set_leftImage(left_image: "scan_code")
        navBar3.set_rightImage(right_image: "search_home")
        
        
        let navBar4 = NavBar.init(frame: CGRect(x: 0, y: 240, width: screen_width, height: navBar_height))
        self.view.addSubview(navBar4)
        navBar4.set_navType(navtype: Navtype.none)
        navBar4.set_title(title: "世界你好")
        navBar4.set_leftImage(left_image: "scan_code")
        navBar4.set_rightImage(right_image: "search_home")
        navBar4.set_leftFrame(leftFrame: CGRect(x: 18, y: 0, width: 44, height: 44))
        navBar4.set_rightFrame(rightFrame: CGRect(x: screen_width-62, y: 0, width: 44, height: 44))

实现方式

import UIKit

enum Navtype:NSInteger {
    case none = 0
    case back = 1
}

class NavBar: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = main_color
        self.addSubview(self.contentView)
    }
    
    func set_navType(navtype:Navtype) -> Void {
        print(navtype)
        switch navtype {
        case Navtype.none:
            do {
                self.contentView.addSubview(titleLabel)
            }
        case Navtype.back:
            do {
                self.leftItem.frame = CGRect(x: 0, y: 0, width: 44.0, height: 44.0)
                self.leftItem.setImage(UIImage(named: "back"), for: .normal)
                self.leftItem.setImage(UIImage(named: "back"), for: .selected)
                self.contentView.addSubview(self.leftItem)
                self.contentView.addSubview(self.titleLabel)
            }
        }
    }
    
    func set_title(title:String) -> Void {
        self.titleLabel.text = title
    }
    
    func set_leftTitle(left_title:String) -> Void {
        self.leftItem.frame = CGRect(x: 20, y: 0, width: 60.0, height: 44.0)
        self.leftItem.setTitle(left_title, for: .normal)
        self.leftItem.setTitleColor(navText_color, for: .normal)
        self.leftItem.contentHorizontalAlignment = .left
        self.contentView.addSubview(self.leftItem)
    }
    
    func set_rightTitle(right_title:String) -> Void {
        self.rightItem.frame = CGRect(x: screen_width-80, y: 0, width: 60.0, height: 44.0)
        self.rightItem.setTitle(right_title, for: .normal)
        self.rightItem.setTitleColor(navText_color, for: .normal)
        self.rightItem.contentHorizontalAlignment = .right
        self.contentView.addSubview(self.rightItem)
    }
    
    func set_leftImage(left_image:String) -> Void {
        self.leftItem.frame = CGRect(x: 15, y: 0, width: 44.0, height: 44.0)
        self.leftItem.setImage(UIImage(named:left_image ), for: .normal)
        self.leftItem.contentHorizontalAlignment = .left
        self.contentView.addSubview(self.leftItem)
    }
    
    func set_rightImage(right_image:String) -> Void {
        self.rightItem.frame = CGRect(x: screen_width-59, y: 0, width: 44.0, height: 44.0)
        self.rightItem.contentHorizontalAlignment = .right
        self.rightItem.setImage(UIImage(named:right_image ), for: .normal)
        self.contentView.addSubview(self.rightItem)
    }
    
    func set_leftFrame(leftFrame:CGRect) -> Void {
        self.leftItem.frame = leftFrame
    }
    
    func set_rightFrame(rightFrame:CGRect) -> Void {
        self.rightItem.frame = rightFrame
    }
    
    
    
    lazy var contentView:UIView = {
        let view = UIView.init(frame: CGRect(x: 0.0, y: statusBar_height, width: screen_width, height: nav_content_height))
        view.backgroundColor = main_color
        return view;
    }()
    
    lazy var titleLabel:UILabel = {
        let label = UILabel.init(frame: CGRect(x:screen_width/2-80, y: 11, width: 160, height: 21))
        label.backgroundColor = clear_color
        label.font = UIFont.systemFont(ofSize: 17)
        label.textColor = navText_color
        label.textAlignment = .center
        return label;
    }()
    
    lazy var leftItem:UIButton = {
        let button = UIButton.init(type:.custom)
        button.titleLabel!.font = UIFont.systemFont(ofSize: 16)
        button.backgroundColor = clear_color
        button.addTarget(self, action: #selector(leftItemClick(button:)), for: .touchUpInside)
        return button;
    }()
    
    lazy var rightItem:UIButton = {
        let button = UIButton.init(type:.custom)
        button.backgroundColor = clear_color
        button.titleLabel!.font = UIFont.systemFont(ofSize: 16)
        button.addTarget(self, action: #selector(rightItemClick(button:)), for: .touchUpInside)
        return button;
    }()
    
    
    @objc func leftItemClick(button:UIButton){
        print("点击左边")
    }
    @objc func rightItemClick(button:UIButton){
        print("点击右边")
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    /*
     // Only override draw() if you perform custom drawing.
     // An empty implementation adversely affects performance during animation.
     override func draw(_ rect: CGRect) {
     // Drawing code
     }
     */
    

}

相关文章

网友评论

      本文标题:Swift 懒加载自定义视图-------(项目准备-学习5)

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