iOS-Swift-并列按钮

作者: 轩辕小羽 | 来源:发表于2015-12-08 21:58 被阅读1041次

前言

今天本来只想写个自适应宽度的一排button的,可是又觉得太简单了,所以玩心大起就加上了控制界面,期间被更改已创建好的View难住了,只能通过暴力手段进行更改了(删除重新创建)

如果有网友有需求的话可以发给我,也许我明天的博客主题就是你的需求


效果图

空隙全部相等

上代码

先创建一个LineButton.swift继承与NSObject的类然后加入一下代码:

import UIKit

class LineButton: NSObject {
    
    // button数组
    var buttonArr:NSMutableArray = []
    // 创建view方法
    func creatLineButton(dataArr:NSMutableArray,buttonSize:CGSize) ->UIView {
        // 最底层容器view
        let myView = UIView(frame: CGRectMake(0,0,UIScreen.mainScreen().bounds.width,buttonSize.height))
        // 计算空隙 空隙 = (总宽 - 所有button的宽)/空隙个数
        let gap = CGFloat((myView.frame.size.width - (buttonSize.width*CGFloat(dataArr.count)))/(CGFloat(dataArr.count+1)))
        for index in 0..<dataArr.count {
            // 定义button
            let button = UIButton(type: UIButtonType.System)
            // 给frame
            button.frame = CGRectMake((CGFloat(index+1))*gap + ((CGFloat(index)*buttonSize.width)), 0, buttonSize.width, buttonSize.height)
            // 赋值
            button.setTitle(dataArr[index] as? String, forState: UIControlState.Normal)
            button.tintColor = UIColor.whiteColor()
            button.backgroundColor = UIColor.lightGrayColor()
            button.setTitle("选中", forState: UIControlState.Selected)
            button.setTitleColor(UIColor.lightGrayColor(), forState: UIControlState.Selected)
            button.titleLabel?.font = UIFont.systemFontOfSize(20)
            // 同一个点击方法 根据传值和数组区分
            button.addTarget(self, action: Selector("buttonClick:"), forControlEvents: UIControlEvents.TouchUpInside)
            // 添加到view上
            myView.addSubview(button)
            // 加入button数组
            buttonArr.addObject(button)
        }
        // 返回值
        return myView
    }
    // 按钮点击事件
    func buttonClick(button:UIButton){
        for b in buttonArr{
            // 遍历按钮数组,如果相同就改成选中状态,不相同就取消选中状态
            if (b as! UIButton) == button{
                (b as! UIButton).selected = true
            }else{
                (b as! UIButton).selected = false
            }
        }
        print(button.titleLabel!.text!)
    }
}

然后在ViewController.swift里添加以下代码:

import UIKit
var dataArr:NSMutableArray = ["按钮1","按钮2","按钮3"]
class ViewController: UIViewController {
    // stroyBoard控件 (没啥用)
    @IBOutlet weak var myslider: UISlider!
    @IBOutlet weak var topTitle: UILabel!
    
    // 把类定义成属性
    let linebutton = LineButton()
    // view
    var  buttonView:UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 搭建view
        layoutView()
    }
    func layoutView(){
        topTitle.text = "按钮个数:\\(Int(myslider.value))"
        // 先删除
        if buttonView != nil{
            buttonView.removeFromSuperview()
            buttonView = nil
        }
        // 再创建
        buttonView = linebutton.creatLineButton(dataArr, buttonSize: CGSizeMake(60, 50))
        buttonView.center = view.center
        self.view.addSubview(buttonView)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    // 添加按钮点击事件
    @IBAction func addButton(sender: UIButton) {
        if myslider.value == 5{
            return;
        }
        // slider.value+1
        myslider.value = myslider.value+1;
        // 数组添加值
        let str = "按钮\\(dataArr.count+1)"
        dataArr.addObject(str)
        // 重新搭建view
        layoutView()
    }
    // 减少按钮点击时间
    @IBAction func subButton(sender: UIButton) {
        if myslider.value == 1{
            return;
        }
        myslider.value =  myslider.value-1;
        // 删除数组最后一个值
        dataArr.removeObjectAtIndex(dataArr.count-1)
        // 重新搭建view
        layoutView()
    }
}

效果

按钮宽度固定自动对其

GitHub:https://github.com/Lafree317/Swift-LineButton


本人还是一只小菜鸡,不过是一只热心肠的菜鸡,如果有需要帮助或者代码中有更好的建议的话可以发邮件到lafree317@163.com中,我们一起进步XD

相关文章

  • iOS-Swift-并列按钮

    前言 今天本来只想写个自适应宽度的一排button的,可是又觉得太简单了,所以玩心大起就加上了控制界面,期间被更改...

  • 英语词性-连词

    连词 连词可分为:并列连词、从属连词。 并列连词 并列连词用于表示:并列关系、转折关系、因果关系。 并列关系 1、...

  • 并列句丨并列连词

    前面说到简单句有五种句型。 句型1:主语(S)+动词(V) 句型2:主语(S)+动词(V)+补语(C) 句型3:主...

  • 英语语法学习:连词的用法!

    一、并列连词 并列连词可以表并列、表转折、表对比、表选择或者表因果关系。 1.表并列 表并列关系的连词主要有:an...

  • 除氧器并列

    下令准备进行除氧器并列操作。对2#除氧器冲洗合格,上水至1#除氧器水位左右,投入加热待两台除氧器温度、压力平衡后,...

  • iOS-Swift-属性

    先看总结:枚举、结构体、类都能定义⽅法、计算属性、下标(包括实例的、类的)计算属性和下标的本质还是方法 枚举、结构...

  • iOS-Swift-枚举

    Swift中的枚举比OC中的枚举更强大。 一. 枚举的基本用法 二. 关联值(Associated Values)...

  • iOS-Swift-简介

    学习环境 下面所讲的是基于Swift5.1开发工具:Xcode11操作系统:macOS 10.14 Mojave、...

  • iOS-Swift-函数

    一. 函数的定义 无返回值 有返回值 形参默认是let,也只能是let 注意:Swift中可以使⽤func定义⼀个...

  • iOS-Swift-扩展

    1. 扩展(Extension) Swift中的扩展,有点类似于OC中的分类(Category) 扩展可以为枚举、...

网友评论

本文标题:iOS-Swift-并列按钮

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