iOS-Swift-并列按鈕

前言

今天本來(lái)只想寫個(gè)自適應(yīng)寬度的一排button的,可是又覺(jué)得太簡(jiǎn)單了,所以玩心大起就加上了控制界面,期間被更改已創(chuàng)建好的View難住了,只能通過(guò)暴力手段進(jìn)行更改了(刪除重新創(chuàng)建)

如果有網(wǎng)友有需求的話可以發(fā)給我,也許我明天的博客主題就是你的需求


效果圖

空隙全部相等

上代碼

先創(chuàng)建一個(gè)LineButton.swift繼承與NSObject的類然后加入一下代碼:

import UIKit

class LineButton: NSObject {
    
    // button數(shù)組
    var buttonArr:NSMutableArray = []
    // 創(chuàng)建view方法
    func creatLineButton(dataArr:NSMutableArray,buttonSize:CGSize) ->UIView {
        // 最底層容器view
        let myView = UIView(frame: CGRectMake(0,0,UIScreen.mainScreen().bounds.width,buttonSize.height))
        // 計(jì)算空隙 空隙 = (總寬 - 所有button的寬)/空隙個(gè)數(shù)
        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)
            // 同一個(gè)點(diǎn)擊方法 根據(jù)傳值和數(shù)組區(qū)分
            button.addTarget(self, action: Selector("buttonClick:"), forControlEvents: UIControlEvents.TouchUpInside)
            // 添加到view上
            myView.addSubview(button)
            // 加入button數(shù)組
            buttonArr.addObject(button)
        }
        // 返回值
        return myView
    }
    // 按鈕點(diǎn)擊事件
    func buttonClick(button:UIButton){
        for b in buttonArr{
            // 遍歷按鈕數(shù)組,如果相同就改成選中狀態(tài),不相同就取消選中狀態(tài)
            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控件 (沒(méi)啥用)
    @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 = "按鈕個(gè)數(shù):\\(Int(myslider.value))"
        // 先刪除
        if buttonView != nil{
            buttonView.removeFromSuperview()
            buttonView = nil
        }
        // 再創(chuàng)建
        buttonView = linebutton.creatLineButton(dataArr, buttonSize: CGSizeMake(60, 50))
        buttonView.center = view.center
        self.view.addSubview(buttonView)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    // 添加按鈕點(diǎn)擊事件
    @IBAction func addButton(sender: UIButton) {
        if myslider.value == 5{
            return;
        }
        // slider.value+1
        myslider.value = myslider.value+1;
        // 數(shù)組添加值
        let str = "按鈕\\(dataArr.count+1)"
        dataArr.addObject(str)
        // 重新搭建view
        layoutView()
    }
    // 減少按鈕點(diǎn)擊時(shí)間
    @IBAction func subButton(sender: UIButton) {
        if myslider.value == 1{
            return;
        }
        myslider.value =  myslider.value-1;
        // 刪除數(shù)組最后一個(gè)值
        dataArr.removeObjectAtIndex(dataArr.count-1)
        // 重新搭建view
        layoutView()
    }
}

效果

按鈕寬度固定自動(dòng)對(duì)其

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


本人還是一只小菜雞,不過(guò)是一只熱心腸的菜雞,如果有需要幫助或者代碼中有更好的建議的話可以發(fā)郵件到lafree317@163.com中,我們一起進(jìn)步XD

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖逸嘀,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡示损,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門嚷硫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)检访,“玉大人始鱼,你說(shuō)我怎么就攤上這事〈喙螅” “怎么了医清?”我有些...
    開(kāi)封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卖氨。 經(jīng)常有香客問(wèn)我会烙,道長(zhǎng),這世上最難降的妖魔是什么筒捺? 我笑而不...
    開(kāi)封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任柏腻,我火速辦了婚禮,結(jié)果婚禮上系吭,老公的妹妹穿的比我還像新娘五嫂。我一直安慰自己,他們只是感情好肯尺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布沃缘。 她就那樣靜靜地躺著,像睡著了一般则吟。 火紅的嫁衣襯著肌膚如雪槐臀。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天逾滥,我揣著相機(jī)與錄音峰档,去河邊找鬼。 笑死寨昙,一個(gè)胖子當(dāng)著我的面吹牛讥巡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舔哪,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼欢顷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捉蚤?” 一聲冷哼從身側(cè)響起抬驴,我...
    開(kāi)封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缆巧,沒(méi)想到半個(gè)月后布持,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陕悬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年题暖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胧卤,死狀恐怖唯绍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枝誊,我是刑警寧澤况芒,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站叶撒,受9級(jí)特大地震影響绝骚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痊乾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一皮壁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哪审,春花似錦蛾魄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叽奥,卻和暖如春扔水,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朝氓。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工魔市, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赵哲。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓待德,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親枫夺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子将宪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件橡庞、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,123評(píng)論 4 61
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,421評(píng)論 7 249
  • 姓名:巢環(huán)環(huán) 公司:寧波大發(fā)化纖有限公司 期數(shù):第264期六項(xiàng)精進(jìn) 組名:努力一組 【日精進(jìn)打卡第5天】共5天 【...
    巢環(huán)環(huán)閱讀 138評(píng)論 0 0
  • 有趣的事到處都有敷待,不同的是,有時(shí)候我們?cè)诓豁樢鈺r(shí)法竞,看到的灰色除呵,就像是上天鋪好的花冢。順意的時(shí)候爪喘,看到的彩色,就像是...
    33a3215decbe閱讀 220評(píng)論 0 1