第五记- Swift版百思不得

一:今天讲解最后一个模块,老规矩,附上效果图

修改前的图:


用的系统的的BarButtonItems,导致间距无法修改,但是如果不用系统的,就相对麻烦很多很多,所以在导航栏这条我想到一个办法就是在中间添加一个空的BarButton,但是

问题来了,如何让这个添加的空的BarButton没有点击事件,也就是点击时没有反应,就像不存在一样,是的,enabled能解决,说了这么多,原理就是这个原理,但我没用这么笨拙的方法。

代码:

 
        let ringht1 =   UIBarButtonItem.init(icon: "mine-setting-icon", highIcon: "mine-setting-icon-click", target: self, action: "right1")
        ringht1.customView?.width = 20
        let ringht2 =   UIBarButtonItem.init(icon: "mine-moon-icon", highIcon: "mine-moon-icon-click", target: self, action: "right2")
        ringht2.customView?.width = 20
        
        //增加一个有一定宽度的UIBarButtonItem  调整间距
        let bar =  UIBarButtonItem.init(barButtonSystemItem: .FixedSpace, target: nil, action: nil)
        bar.width = 20
        navigationItem.rightBarButtonItems = [ringht1,bar,ringht2]

最终效果:



现在说说其余功能点,看到cell,可能有人想到了静态cell,但是我这里没用xib,我是改变cell的Image及Lable的frame

主要代码:

 //重写布局 修改frame
    override func layoutSubviews() {
        super.layoutSubviews()
        
        if (self.imageView!.image == nil){
            return
        }
        self.imageView!.width = 30
        self.imageView!.height = 30
        self.imageView!.centerY = self.contentView.height * 0.5
        self.textLabel!.x = CGRectGetMaxX(self.imageView!.frame) + 10
        
    }
当然这是针对前两个cell,对于自拍和我是段子手这样的cell,我没打算重新创建一个cell,而是在原有cell中添加两个UIButton,每个button占据一半宽,高为44
关键代码:

     cell?.addSubview(bthLeft)
     cell?.addSubview(btnRight)


现在说说最后那些按钮,首先一看就能定位这是tableFootView,所有呢,这就修改创建一个自定义类,我这里用的xib,xib加代码是非常方便开发

关键代码:

  //尾部 是单独的view  写一个继承View的类
   self.tableView.tableFooterView = Footer.init(frame: CGRectZero)
请求数据获取到了之后就将数据传递给xib创建的button,直接将数据赋值就ok,

在footer中得关键代码:

  let maxCols:CGFloat = 4
        //等宽
        let buttonW = screen_width / maxCols
        let buttonH = buttonW

         for i in 0 ..< FootArr.count{
            let  but = XYfootBut.footBut() as! XYfootBut
           //设置frame
            let col = CGFloat(i) % maxCols
            let row = i / Int(maxCols)
            but.frame = CGRectMake(col * buttonW, CGFloat(row) * buttonH, buttonW, buttonH)
            
            XYDEBUG(but.frame)
            if (i == 12){
                let footBut =  NSBundle.mainBundle().loadNibNamed("XYfootBut", owner: nil, options: nil) as NSArray
                let but = footBut.lastObject as! XYfootBut
                but.frame = CGRectMake(col * buttonW, CGFloat(row) * buttonH, buttonW, buttonH)
                self.addSubview(but)
                return
            }
            
            but.footModel = creatButton[i] as? XYFootModel
            self.addSubview(but)
        }

其实个人觉得这个模块是最简单的,因为没有太多的细节考虑,唯一的点就是 BarButton的间距问题。


二:精华模块中还有一个比较重要的就是标签订阅,

效果图:



这个模块我主要是讲解点击搜索的时候,导航栏直接隐藏,搜索框直接置顶,出现一个蒙盖,因为没有搜索模块的api所以没做,只是将效果做出来了,

分享:当点击搜索控件,就走了他的代理方法,所以我们肯定是在代理方法中执行,

这个蒙盖我们可以当做是一个半透明的按钮,最开始是隐藏的,走了代理就显示出来,

在搜索框编辑时,就应该添加了一个子控制器,因为搜索的结果要显示,所以子控制器就办了这件事,

关键代码:

   //开始编辑
    func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
        self.navigationController?.setNavigationBarHidden(true, animated: true)
        UIView.animateWithDuration(0.6) { () -> Void in
            
            self.covnBut.alpha = 0.6
        }
    }
代码:

    var searchRestlt:XYSubSearchResult?{  
        get{
            let searchRestlt = XYSubSearchResult()
            addChildViewController(searchRestlt)
            _searchRestlt = searchRestlt
            self.view.addSubview(searchRestlt.view)
            //约束 到其父view上左下右的间距
//           let layoutMo =  _searchRestlt!.view.sd_layout() as SDAutoLayoutModel
//           layoutMo.leftSpaceToView(view,10)
//            .topSpaceToView(view, -64)
            return searchRestlt

        }set(Restlt ){
            
            _searchRestlt = Restlt
        }
    }

这就是添加了一个子控制的代码,在编辑代理方法中添加这个子控制,然后将输入的数据传递给这个子控制器,然后通过这个数据加载API数据,也就是搜索数据

代码:

    /**
     *  搜索框里面的文字变化的时候调用
     */
    func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
        
        if (searchText.isEmpty) {
            self.searchRestlt!.view.hidden = true
        } else {
        
            self.searchRestlt!.view.hidden = false
            self.searchRestlt!.searchText = searchText;//将输入的值进行匹配查询

        }
        
    }


好了,讲解在这就结束了。
这是我的项目 地址





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值