Swift:UIKit中Demo(一)

來源:互聯網
上載者:User

標籤:cte   操作   推斷   設定   view   uibutton   UI   gre   code   

關於Swift的基本概念及文法知識。我在前面的章節中已經介紹了非常多。這一節和下一節主要有針對性的解說Swift在實際UIKit開發中的使用情境及注意點。先來看看Demo的終於。


Demo分析:

1. 介面上面有三個button,他們的寬度不一致。

2. 點擊每一個button的時候。以下有紅色底線跟著"走動"。

一、 Storyboard中的設計



注意到,這個紅色底線是任意擺放的。沒有刻意的設定它的位置及寬度。而這個紅色底線也就是一個簡單的UIView。


二、 拖線工作

在本例中,有三個IBOutlet連線工作,代碼例如以下:

@IBOutlet weak var firstButton: UIButton!@IBOutlet weak var underline: UIView!@IBAction func btnClick(sender: UIButton)
1. 之所以連線第一個button。是由於程式剛啟動的時候,應該預設運行點擊第一個button的事件,以此來改變紅色底線的位置及寬度。

2. underline這個UIView便是這個紅色底線。

關於上面 "!" 使用假設有什麼疑問的話。能夠參照 《Swift:可選類型(Optional)》。

3. btnClick 這種方法就是三個button的共同點擊事件。


三、 button點擊事件分析

代碼例如以下:

UIView.animateWithDuration(0.25, animations: { () -> Void inself.selectedButton?.selected = falsesender.selected = trueself.selectedButton = sender            // 要先設定寬高,後設定位置,不然效果有影響self.underline.frame.size.width = sender.frame.size.widthself.underline.center.x = sender.center.xself.underline.frame.origin.y = CGRectGetMaxY(sender.frame) + 5   })

代碼中的前三句是經典的button點擊三部曲(用來切換button的點擊狀態),後面三句就是用來實現終於的動畫;程式簡單明了,我就不做過多的解釋工作。

僅僅想說明兩點:

1. selectedButton 是定義的一個屬性,用來指向被選中的button。

2. self.selectedButton?.selected = false 事實上是代碼的簡寫形式。也能夠寫成以下的形式,他們是等價的。

if(self.selectedButton != nil){     self.selectedButton.selected = false}
注意: 在推斷語句中,我們使用了比較推斷,即self.selectedButton 是否為nil。

在objective-c中,或許大家會直接書寫成 if(self.selectedButton) 進行推斷就能夠了。可是在Swift中這樣書寫是錯誤的。

由於Swift是型別安全的語言,推斷條件必須是bool值。即使你在Swift中寫成 if(1) 這種推斷條件也是失敗的。


四、 預設選中第一個button

這個操作事實上是非常easy的。僅僅要在viewDidLoad中加一句

self.btnClick(self.firstButton)

但會出現底線預設會移動的效果。由於底線預設不在第一個button的下方。所以運行動畫,會移動過去。

解決的辦法就是在預設載入的時候,禁止動畫就可以。所以終於的代碼例如以下:

class ViewController: UIViewController {    weak var selectedButton: UIButton!    @IBOutlet weak var firstButton: UIButton!    @IBOutlet weak var underline: UIView!    @IBAction func btnClick(sender: UIButton) {                UIView.animateWithDuration(0.25, animations: { () -> Void in            self.selectedButton?

.selected = false sender.selected = true self.selectedButton = sender self.underline.frame.size.width = sender.frame.size.width self.underline.center.x = sender.center.x self.underline.frame.origin.y = CGRectGetMaxY(sender.frame) + 5 }) } override func viewDidLoad() { super.viewDidLoad() // 介面剛載入進來的時候。禁止動畫 UIView.setAnimationsEnabled(false) self.btnClick(self.firstButton) UIView.setAnimationsEnabled(true) }}


Swift:UIKit中Demo(一)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.