博客> 6.21 popView完善
6.21 popView完善
2017-09-24 01:12 评论:0 阅读:293 qq139391025
ios swift popview

虽然昨天把popView写出来了,可当我把他单独拎出来做Demo的时候又冒出好多问题。。。 主要还是屏幕适配的问题,apple的原生的约束写起来实在是太可怕了,还好我们有snapKit,没办法看了好意会的资料总算是大概搞明白点东西了。 在约束下 各个空间的frame都不用定义了。 贴一段代码解释下吧

    func setConstraints(popView:CustomPopView,position:PopViewPosition)  {
    popView.meunImageView!.snp_makeConstraints { (make) in
        //根据position设置菜单view的位置
        switch position{
        case .left:
            make.left.equalTo(5)
        case .right:
             make.right.equalTo(popView.snp_right).offset(-5)
        case .center:
            make.centerX.equalTo(0)
        }
        make.width.equalTo(popView.snp_width).multipliedBy(0.5)
        make.height.equalTo(popView.snp_height).multipliedBy(0.5)
        make.top.equalTo(nav.snp_bottom).offset(-10)
    }
    popView.contentView?.snp_makeConstraints(closure: { (make) in
        make.left.equalTo(10)
        make.right.equalTo(-10)
        make.bottom.equalTo(popView.meunImageView!).offset(-10)
        make.top.equalTo(popView.meunImageView!).offset(15)
    })
}

做个说明CustomPopView就是我的自定义popview,PopViewPosition是弹出框的箭头指向位置(左、中、右) meunImageView就是菜单的背景图片,contentView就是内容view。 这个contentView是贴在meunImageView上,所以contentView这边的约束只要相对于meunImageView,上下左右都预留一点就行。 meunImageView的约束就稍微复杂一点,左中右的不同情况下meunImageView出现的位置也不同。 但size都相同,不同屏幕上的效果都不同所以我们要用到变化的heightwidth。相对顶端的距离都一样 这样我们只要考虑meunImageView的X值,left相对于屏幕左边只要留一点就OK,right相对于右边也只要留一点,center的话只要将1. meunImageView的centerX为居中

顺带再提下之前自己做的死。。。自定义了一个NavBar,对就是一个导航条,没有navigationController,想在上面加个左button和右button。 结果发现我要响应事件的时候出了问题。。。navItem没法像button一样addTarget来个action。这就苦恼了,我没法外部关联这个左右item的action事件。。。 最后想了个办法——这两个item直接在外部用的时候再inint

    nav!.leftItem = UIBarButtonItem.init(barButtonSystemItem: .Add, target: self, action: #selector(FirstViewController.clickLeft))
    nav!.rightItem = UIBarButtonItem.init(barButtonSystemItem: .Add, target: self, action: #selector(FirstViewController.clickRight))
    let navItem = UINavigationItem.init()
    navItem.leftBarButtonItem = nav?.leftItem
    navItem.rightBarButtonItem = nav?.rightItem
    nav!.pushNavigationItem(navItem, animated: true)

今天就这样吧 明天继续

收藏
0
sina weixin mail 回到顶部