1. 程式人生 > >[Swift通天遁地]一、超級工具-(19)製作六種別具風格的動作表單

[Swift通天遁地]一、超級工具-(19)製作六種別具風格的動作表單

本文將演示如何製作多種別具風格的動作表單。

首先確保在專案中已經安裝了所需的第三方庫。

點選【Podfile】,檢視安裝配置檔案。

 1 platform :ios, '12.0'
 2 use_frameworks!
 3 
 4 target 'DemoApp' do
 5     source 'https://github.com/CocoaPods/Specs.git'
 6     pod 'XLActionController'
 7     pod 'XLActionController/Periscope'
 8     pod 'XLActionController/Skype
' 9 pod 'XLActionController/Spotify' 10 pod 'XLActionController/Tweetbot' 11 pod 'XLActionController/Twitter' 12 pod 'XLActionController/Youtube' 13 end

根據配置檔案中的相關配置,安裝第三方庫。

然後點選開啟【DemoApp.xcworkspace】專案檔案。

在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】

選擇開始編寫程式碼,建立動作表單。

  1 import UIKit
2 //在當前類檔案中,引入已經安裝的第三方類庫 3 import XLActionController 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //
新增一個按鈕,當用戶點選該按鈕時,開啟動作表單 12 let button = UIButton(frame: CGRect(x: 20, y: 200, width: 280, height: 40)) 13 //設定按鈕的背景顏色為橙色 14 button.backgroundColor = UIColor.orange 15 //設定按鈕在正常狀態下的標題文字 16 button.setTitle("Show me the XLActionController", for: .normal) 17 //給按鈕控制元件繫結點選事件,【分別繫結生成動作表單的六種方法】 18 button.addTarget(self, 19 action: #selector(ViewController.tweetbotActionController), 20 for: .touchUpInside) 21 //將按鈕控制元件新增到當前的根檢視 22 self.view.addSubview(button) 23 //設定根檢視的背景顏色為橙色 24 self.view.backgroundColor = UIColor.orange 25 } 26 27 //表單風格1,注意繫結按鈕的點選事件 28 //新增一個方法,用來響應按鈕的點選事件 29 @objc func tweetbotActionController() 30 { 31 //初始化一個指定風格的動作表單 32 let actionController = TweetbotActionController() 33 34 //1.在動作表單中新增一個表單選項,表單選項的樣式為預設 35 //動態表單消失之後,才執行相關的程式碼 36 actionController.addAction(Action("View Details", 37 style: .default, //表單樣式:預設樣式 38 handler: { action in 39 //當用戶選擇該選項時,在控制檯輸出一條日誌資訊 40 print("View Details") 41 })) 42 //2.在動作表單中新增一個表單選項,表單選項的樣式為預設 43 //動態表單消失之後,才執行相關的程式碼 44 actionController.addAction(Action("View Retweets", 45 style: .default, //表單樣式:預設樣式 46 handler: { action in 47 //當用戶選擇該選項時,在控制檯輸出一條日誌資訊 48 print("View Retweets") 49 })) 50 //3.在動作表單中新增一個表單選項,表單選項的樣式為預設。 51 //動態表單消失之後,才執行相關的程式碼 52 actionController.addAction(Action("View in Favstar", 53 style: .default, 54 handler: { action in 55 //當用戶選擇該選項時,在控制檯輸出一條日誌資訊 56 print("View in Favstar") 57 })) 58 59 //4.在動作表單中新增一個表單選項,表單選項的樣式為預設, 60 //該選項被點選後將立即執行程式碼塊中的語句。 61 actionController.addAction(Action("Translate", 62 style: .default, 63 executeImmediatelyOnTouch: true, 64 handler: { action in 65 //當用戶選擇該選項時,在控制檯輸出一條日誌資訊 66 print("View Translate") 67 })) 68 69 //在動作表單中新增另一個段落 70 actionController.addSection(Section()) 71 //並在該段落中,新增一個用於關閉視窗的取消樣式的按鈕 72 actionController.addAction(Action("Cancel", style: .cancel, handler:nil)) 73 74 //在當前的檢視控制器中,通過模態的方式彈出動作表單 75 present(actionController, animated: true, completion: nil) 76 } 77 78 //表單風格2,注意繫結按鈕的點選事件 79 //新增一個方法,用來建立第二種樣式的動作表單 80 @objc func twitterActionController() 81 { 82 //初始化一個動作表單控制器物件 83 let actionSheet = TwitterActionController() 84 //設定表單頭部的文字內容 85 actionSheet.headerData = "Accounts" 86 87 //在動作表單中新增一個表單選項,表單選項的樣式為預設,設定相關引數。 88 actionSheet.addAction(Action(ActionData(title: "Xmartlabs", //標題 89 subtitle: "@xmartlabs",//子標題 90 image: UIImage(named: "tw-xmartlabs")!), //左側圖示 91 style: .default, //表單樣式:預設樣式 92 handler: { action in //互動動作 93 print("@xmartlabs") 94 })) 95 //在動作表單中新增一個表單選項,表單選項的樣式為預設,設定相關引數。 96 actionSheet.addAction(Action(ActionData(title: "Miguel", //標題 97 subtitle: "@remer88",//子標題 98 image: UIImage(named: "tw-remer")!), //左側圖示 99 style: .default,//表單樣式:預設樣式 100 handler: { action in //互動動作 101 print("@remer88") 102 })) 103 104 //在當前的檢視控制器中,通過模態的方式彈出動作表單 105 present(actionSheet, animated: true, completion: nil) 106 } 107 108 //表單風格3,注意繫結按鈕的點選事件 109 //新增一個方法,用來建立第三種樣式的動作表單 110 @objc func youtubeActionController() 111 { 112 //初始化一個動作表單控制器物件 113 let actionController = YoutubeActionController() 114 115 //在動作表單中新增一個表單選項,表單選項的樣式為預設,設定相關引數。 116 actionController.addAction(Action(ActionData(title: "Add to Watch Later",//標題 117 image: UIImage(named: "yt-add-to-watch-later-icon")!), //左側圖示 118 style: .default, //表單樣式:預設樣式 119 handler: { action in 120 })) 121 //在動作表單中新增一個表單選項,表單選項的樣式為預設,設定相關引數。 122 actionController.addAction(Action(ActionData(title: "Add to Playlist...", //標題 123 image: UIImage(named: "yt-add-to-playlist-icon")!), //左側圖示 124 style: .default,//表單樣式:預設樣式 125 handler: { action in //互動動作 126 })) 127 //在動作表單中新增一個表單選項,表單選項的樣式為預設,設定相關引數。 128 actionController.addAction(Action(ActionData(title: "Share...", //標題 129 image: UIImage(named: "yt-share-icon")!), //左側圖示 130 style: .default, //表單樣式:預設樣式 131 handler: { action in //互動動作 132 })) 133 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 134 actionController.addAction(Action(ActionData(title: "Cancel", //標題 135 image: UIImage(named: "yt-cancel-icon")!), //左側圖示 136 style: .cancel, //表單樣式:取消樣式 137 handler: nil)) //互動動作 138 139 //在當前的檢視控制器中,通過模態的方式彈出動作表單 140 present(actionController, animated: true, completion: nil) 141 } 142 143 //表單風格4,注意繫結按鈕的點選事件 144 //新增一個方法,用來建立第四種樣式的動作表單 145 @objc func periscopeActionController() 146 { 147 //初始化一個動作表單控制器物件 148 let actionController = PeriscopeActionController() 149 //設定表單頭部的文字內容 150 actionController.headerData = "Are you sure you want to block?" 151 //在動作表單中新增一個表單選項,表單選項的樣式為破壞樣式,設定相關引數。 152 actionController.addAction(Action("Block user", //標題 153 style: .destructive, 154 handler: { action in //互動動作 155 })) 156 157 //在動作表單中,新增另一個具有相同風格的段落 158 actionController.addSection(PeriscopeSection()) 159 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 160 actionController.addAction(Action("Cancel", //標題 161 style: .cancel, 162 handler: { action in //互動動作 163 })) 164 165 //在當前的檢視控制器中,通過模態的方式彈出動作表單 166 present(actionController, animated: true, completion: nil) 167 } 168 169 //表單風格5,注意繫結按鈕的點選事件 170 //新增一個方法,用來建立第五種樣式的動作表單 171 @objc func spotifyActionController() 172 { 173 //初始化一個動作表單控制器物件 174 let actionController = SpotifyActionController() 175 176 //設定表單頭部的文字內容,其包含:標題、子標題、圖示。 177 actionController.headerData = SpotifyHeaderData(title: "The Fast And The Furious Soundtrack Collection", //標題 178 subtitle: "Various Artists", //子標題 179 image: UIImage(named: "sp-header-icon")!) //圖示 180 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 181 actionController.addAction(Action(ActionData(title: "Save Full Album", //標題 182 image: UIImage(named: "sp-add-icon")!),//左側圖示 183 style: .default, //表單樣式:預設樣式 184 handler: { action in })) //互動動作 185 186 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 187 actionController.addAction(Action(ActionData(title: "Remove", //標題 188 image: UIImage(named: "sp-remove-icon")!), //左側圖示 189 style: .default, //表單樣式:預設樣式 190 handler: { action in })) //互動動作 191 192 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 193 actionController.addAction(Action(ActionData(title: "Share", //標題 194 image: UIImage(named: "sp-share-icon")!), //左側圖示 195 style: .default, //表單樣式:預設樣式 196 handler: { action in })) //互動動作 197 198 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 199 actionController.addAction(Action(ActionData(title: "Go to Album", //標題 200 image: UIImage(named: "sp-view-album-icon")!),//左側圖示 201 style: .default, //表單樣式:預設樣式 202 handler: { action in })) //互動動作 203 204 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 205 actionController.addAction(Action(ActionData(title: "Start radio",//標題 206 image: UIImage(named: "sp-radio-icon")!), //左側圖示 207 style: .default, //表單樣式:預設樣式 208 handler: { action in })) //互動動作 209 210 //在當前的檢視控制器中,通過模態的方式彈出動作表單 211 present(actionController, animated: true, completion: nil) 212 } 213 214 //表單風格6,注意繫結按鈕的點選事件 215 //新增一個方法,用來建立第六種樣式的動作表單 216 @objc func skypeActionController() 217 { 218 //初始化一個動作表單控制器物件 219 let actionController = SkypeActionController() 220 221 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 222 actionController.addAction(Action("Take photo", //標題 223 style: .default, //表單樣式:預設樣式 224 handler: { action in})) //互動動作 225 226 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 227 actionController.addAction(Action("Choose existing photo", //標題 228 style: .default, //表單樣式:預設樣式 229 handler: { action in})) //互動動作 230 231 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 232 actionController.addAction(Action("Remove profile picture", //標題 233 style: .default,//表單樣式:預設樣式 234 handler: { action in})) //互動動作 235 236 //在動作表單中新增一個表單選項,表單選項的樣式為取消樣式,設定相關引數。 237 actionController.addAction(Action("Cancel", //標題 238 style: .cancel, //表單樣式:取消樣式 239 handler: nil)) //互動動作 240 241 //在當前的檢視控制器中,通過模態的方式彈出動作表單 242 present(actionController, animated: true, completion: nil) 243 } 244 245 override func didReceiveMemoryWarning() { 246 super.didReceiveMemoryWarning() 247 // Dispose of any resources that can be recreated. 248 } 249 }