iOS系列 基礎篇 09 開關、滑塊和分段控制項

来源:http://www.cnblogs.com/LonelyShadow/archive/2016/09/06/5844092.html
-Advertisement-
Play Games

通過案例演示開關控制項Switch、滑塊控制項Slider和分段控制項Segmented Control的使用。 ...


iOS系列 基礎篇 09 開關、滑塊和分段控制項

 

目錄:

  1. 案例說明
  2. 開關控制項Switch
  3. 滑塊控制項Slider
  4. 分段控制項Segmented Control

 

 

1. 案例說明

  開關控制項(Switch)、滑塊控制項(Slider)和分段控制項(Segmented Control)都是UIControl的子類,本篇我們將通過一個案例和大家一起學習這三個控制項的使用。

 

  如下圖所示,本案例包括兩個開關控制項Switch、一個分段控制項(Segmented Control)、兩個標簽(Label)和一個滑塊控制項(Slider):

 

 

 

  兩個開關控制項的值保持相反狀態,點擊其中的一個,令其值為ON,另一個也會隨之發生變化。

  一個有兩段的分段控制項,左側和右側的段分別命名為Left和Right,點擊Right時上面哪兩個開關控制項消失,點擊Left時上面兩個開關控制項恢復顯示。

  最下麵那個滑塊控制項可以改變上面Label標簽的文本內容,把滑塊變化的樹枝顯示在Label上面。

 

 

 

2. 開關控制項Switch

  使用Single View Application模板創建一個工程項目,打開Main.storyboard文件。

  從對象庫中拖拽兩個開關控制項(Switch)到界面上,然後將它們的State屬性設為相反。

 

  因為要在代碼中控制使兩個開關控制項保持相反值,所以需要為兩個開關控制項置頂輸出口,分別命名為LeftSwitch和RightSwitch。

  (PS:忘記怎麼添加輸出口的請看前面的文章《iOS系列 基礎篇 07 Action動作和輸出口》)

 

  按住control鍵,拖拽左邊的Switch到右側的代碼中,添加Outlet輸出口:

 

  設置名稱為LeftSwitch:

 

 

  按照相同的方式添加右側開關控制項的Outlet,並命名為RightSwitch,最終效果為:

 

  在ViewController中聲明一個switchValueChange: 方法,該方法的作用是同時設置兩個開關的值,使它們的值保持相反。

  (PS:忘記如何添加Action動作的請參考前面的文章《iOS系列 基礎篇 07 Action動作和輸出口》)

 

  按住control鍵,拖拽開關控制項到右側代碼中:

 

  在彈出的對話框中選擇添加Action,並設置如下信息:

 

  添加Action動作方法之後,具體的實現代碼如下:

 1     @IBAction func switchValueChanged(sender: AnyObject) {
 2         let senderSwitch = sender as! UISwitch  // 獲取當前點擊的控制項並強制轉型為Switch
 3         
 4         let value = senderSwitch.on // 獲取當前點擊Switch後的狀態值
 5         
 6         // 如果當前點擊的是LeftSwitch
 7         if (senderSwitch == self.LeftSwitch){
 8             self.RightSwitch.setOn(!value, animated: true)  // 設置右側Switch的狀態值
 9         }else{  // 如果當前點擊的是RightSwitch
10             self.LeftSwitch.setOn(!value, animated: true)    // 設置左側Switch的狀態值
11         }
12     }

 

  然後按住control,將右側的Switch也拖拽到上面這個方法上,這樣,兩個Switch的Action就綁定在一個方法上了:

 

  運行效果如下:

 

 

 

 

3. 滑塊控制項Slider

  如上案例效果圖所示,從對象庫中拖拽一個滑塊控制項Slider到設計器中,並擺放在屏幕中央的位置。

 

  打開它的屬性檢查器,將其最小值、最大值、初始值依次設定為0.0、1.0、0.5。

  在iOS中,滑塊的值是0.0到1.0之間的浮點數。

 

  在滑塊上方如圖所示,放置兩個Label標簽控制項,將左側的標簽文本改為“滑塊當前值:”,將右側的文本設置為50。

  (因為滑塊預設就是在中間的0.5,我想在Label上顯示0~100,所以預設就50了)

 

  為右側要顯示值的Label添加Outlet輸出口,並命名為SliderValue:

 

  在彈出的視窗中設置名稱為SliderValue,如下:

 

  設置Slider的Outlet輸出口後代碼如下:

1 @IBOutlet weak var SliderValue: UILabel!

 

  右側的這個Label是用來顯示滑塊當前值的,這裡我們需要為滑塊實現一個Action動作:

 

  將其命名為sliderValueChanged:

 

  滑塊的Action代碼如下:

1     @IBAction func sliderValueChanged(sender: AnyObject) {
2         let slider = sender as! UISlider    // 當前拖動的滑塊
3         let value = Int(slider.value*100)   // 獲取當前值(0.x)乘以100後的Int值
4         let showText = NSString(format: "%d", value)    // 將數據格式化
5         self.SliderValue.text = showText as String  // 顯示在Label上
6     }

 

  運行效果如下:

 

 

 

 

4. 分段控制項Segmented Control

  分段控制項(Segmented Control)也是一種選擇控制項,其功能類似於Windows中的單選按鈕。

  它由兩段或多段構成,每個段相當於一個獨立的按鈕。

 

  它有三種樣式:Plain、Bordered和Bar樣式,在iOS 7之後,這三種樣式沒有什麼太大的區別,大家可以試試看。

 

  如上案例效果圖所示,拖拽一個分段控制項(Segmented Control)到設計器中,將左段文本設置為Left,右段文本設置為Right。

  然後添加Action方法touchDown:

 1     @IBAction func touchDown(sender: AnyObject) {
 2         if (self.LeftSwitch.hidden){    // 如果當前開關控制項是顯示的
 3             // 將兩個開關都隱藏
 4             self.LeftSwitch.hidden = false
 5             self.RightSwitch.hidden = false
 6         }else{  // 如果當前開關控制項是隱藏的
 7             // 將兩個開關都顯示
 8             self.LeftSwitch.hidden = true
 9             self.RightSwitch.hidden = true
10         }
11     }

 

  效果如下:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 剛入前端不久,之前主要學的是PC端的佈局,到公司之後負責的主要是移動端頁面,剛開始時為了使頁面適應移動端不同的屏幕大小採用的是百分比加媒體查詢的方式,做完一個項目之後,感覺非常不好用,雖然最後也基本使頁面做到了適配。所以做完這個項目之後…… ...
  • 原文鏈接: "https://ponyfoo.com/articles/understanding javascript async await" 作者: "Nicolás Bevacqua" 目前 特性並沒有被添加到ES2016標準中,但不代表這些特性將來不會被加入到Javascript中。在我寫 ...
  • rem可以在移動端開發過程中帶來強大的便利性,本文講述了使用rem在實際開發中的步驟。 ...
  • 在HTML頁面中的body載入進來的時候,外部引用的js文件存放的位置 1.js文件放在body裡面,則是按照body的載入順序(按先後順序)進行載入 2.js文件放在<head>標簽裡面的文件,則是在body載入完之後,才載入頭部的js文件 註:js文件和body載入的順序是: body > js ...
  • 一.簡介 對於WEB應用程式:用戶瀏覽器發送請求,伺服器接收並處理請求,然後返回結果,往往返回就是字元串(HTML),瀏覽器將字元串(HTML)渲染並顯示瀏覽器上 通過在後臺與伺服器進行少量數據交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新 ...
  • 一、函數作用域 1.函數作用域 就是作用域在一個“Function”里,屬於這個函數的全部變數都可以在整個函數的範圍內使用及復用。 上面的“foo”函數內的幾個標識符,放到函數外面訪問就都會報錯。 2.立即執行函數表達式 在任意代碼片段外部添加包裝函數,可以將內部的變數和函數定義“隱藏”起來,外部作 ...
  • Object對象詳細參考 JavaScript原生提供一個Object對象(註意起首的O是大寫),所有其他對象都繼承自這個對象。 構造函數: Object 構造函數為給定的值創建一個對象包裝。 如果給定值是 null or undefined,將會創建並返回一個空對象 否則,將返回一個與給定值對應類 ...
  • 如果說XHTML已經開始尋求取代HTML,那麼HTML5的實用性在於,它將兩種語法整合在一起,採用同樣有效的方式來表達HTML的抽象DOM表示。HTML5規範結合了HTML4,XHTML1以及DOM級別2HTML,併進行了相應的更新。 HTML5取代XHTML 1成為HTML規範的XML序列化格式。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...