自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

5 分鐘,帶你快速擼一個 iOS App

移動開發(fā) iOS
使用 Python 寫完爬蟲后,有時候我們需要在手機上實時對爬蟲進行調度,或實時展示爬蟲的結果,面對這種場景,我們可以將爬蟲邏輯寫成 API 部署到服務器,然后在移動端編寫 App,通過界面元素控件直接調用接口即可,本篇文章,將和大家聊聊如何快速編寫一款 iOS 原生 App。

[[404179]]

本文轉載自微信公眾號「AirPython」,作者星安果。轉載本文請聯系AirPython公眾號。

1. 前言

大家好,我是安果!

使用 Python 寫完爬蟲后,有時候我們需要在手機上實時對爬蟲進行調度,或實時展示爬蟲的結果

面對這種場景,我們可以將爬蟲邏輯寫成 API 部署到服務器,然后在移動端編寫 App,通過界面元素控件直接調用接口即可

本篇文章,將和大家聊聊如何快速編寫一款 iOS 原生 App

2. 準備

要實現原生 iOS 應用,我們需要在 Mac 上使用 Xcode 編寫并進行編譯

首先,設置 Xcode 的開發(fā)者賬號

打開 Xcode,左上角選擇 Xcode - Preferences - Accounts,點擊左下角的 + 號,添加一個開發(fā)者賬號

然后,使用 Xcode 創(chuàng)建一個項目

這里模版選擇 iOS App,輸入項目名稱,編程語言選擇「 Swift 」,點擊下一步完成項目的創(chuàng)建

PS:Swift 相比 OC,語法更加簡潔明了

最后,為新創(chuàng)建的項目指定 Sign 簽名

這部分如果有疑惑,可以點擊文末的閱讀原文去了解

3. 實戰(zhàn)

實戰(zhàn)部分,我們以一個簡單的登陸頁面來進行講解

3-1 安裝依賴庫

由于項目使用 Swift 開發(fā),這里推薦使用 SPM( Swift Package Manager )來安裝依賴

比如,網絡請求庫「 Alamofire 」

項目地址:https://github.com/Alamofire/Alamofire

安裝方式:File - Swift Packages - Add Package Dependency - 輸入項目地址( Github / Gitee )- 選擇安裝版本

3-2 頁面布局

打開項目根目錄下的「 ContentView.swift 」文件,在 body 下編寫具體的視圖

首先,使用 VStack 定義一個垂直的布局盒子,并定義子控件水平居中展示

PS:SwiftUI 常見的 3 種布局方式為 VStack、HStack、ZStack,它們分別代表垂直布局、水平布局、深度布局

  1. import SwiftUI 
  2. import Combine 
  3.  
  4. struct ContentView: View { 
  5.      
  6.     ... 
  7.      
  8.     //構建頁面View 
  9.     var body: some View { 
  10.         VStack(alignment: HorizontalAlignment.center){ 
  11.            ... 
  12.         } 
  13.     }  

然后,子元素依次添加一張本地圖片、兩個輸入框、一個選擇框、一個按鈕

其中,

  • 圖片控件 Image
  • 文本輸入框控件 TextField
  • 選擇框控件 Toggle
  • 按鈕控件 Button
  1. import SwiftUI 
  2. import Combine 
  3.  
  4. struct ContentView: View { 
  5.      
  6.     //構建頁面View 
  7.     var body: some View { 
  8.         VStack(alignment: HorizontalAlignment.center){ 
  9.             Image("WechatIMG5"
  10.              
  11.             TextField("用戶名", text: $username).textFieldStyle(RoundedBorderTextFieldStyle()) 
  12.                 .keyboardType(.numberPad) 
  13.                 .padding() 
  14.              
  15.             TextField("密碼", text: $pwd).textFieldStyle(RoundedBorderTextFieldStyle()) 
  16.                 .keyboardType(.numberPad) 
  17.                 .padding() 
  18.              
  19.             //是否為測試 
  20.             Toggle(isOn: $isFavorited) { 
  21.                 Text("測試環(huán)境"
  22.                 }.padding(.leading, 0.0).frame(width: 140, height: 40) 
  23.  
  24.             Button(action: { 
  25.                 //具體的操作      
  1.     }    
  2.     struct ContentView_Previews: PreviewProvider { 
  3.         static var previews: some View { 
  4.             ContentView() 
  5.         } 
  6.     }    
  7.      

最后,定義變量和控件數據進行雙向綁定

  1. struct ContentView: View { 
  2.      
  3.     @State  var username:String = "用戶名" 
  4.     @State  var pwd:String = "密碼" 
  5.     @State  var result:String = "結果" 
  6.     @State  var isFavorited:Bool = false 
  7.          

3-3 網絡請求及結果展示

為 Button 控件設置點擊事件,使用 Alamofire 進行網絡請求,最后將結果展示寫入到結果控件綁定到數據中去即可

  1. Button(action: { 
  2.                 //具體的操作 
  3.                 print("start"
  4.                  
  5.                 var url = "" 
  6.                  
  7.                 if(self.isFavorited){ 
  8.                    url = "...?username=" + self.username + "&password=" + self.pwd 
  9.                 }else
  10.                    url = "...?username=" + self.username + "&password=" + self.pwd 
  11.                 } 
  12.                  
  13.                 print("請求地址:"+url) 
  14.                  
  15.                 AF.request(url).responseJSON { response in 
  16.                     switch response.result { 
  17.                     case .success(let json): 
  18.                         //轉為Dictionary 
  19.                         let post_paramsValue = json as! Dictionary<String,Any
  20.                          
  21.                         //__NSCFString 
  22.                         let msg = post_paramsValue["msg"]! 
  23.                         //轉為String 
  24.                         let msg_pro = msg as! String 
  25.                          
  26.                         self.result = msg_pro 
  27.                          
  28.                         break 
  29.                     case .failure(let error): 
  30.                         print("error:\(error)"
  31.                         self.result = "網絡異常,請稍后再試!" 
  32.                         break 
  33.                     } 
  34.                 } 
  35.                  
  36.             }) { 
  37.                 Text("一鍵執(zhí)行"
  38.                     .foregroundColor(Color.white) 
  39.                     .padding(10) 
  40.                     .background(Color.gray) 
  41.                     .cornerRadius(6) 
  42.                     .padding(10) 
  43.                     .frame(alignment: .center) 
  44.             } 
  45.              
  46.             TextField("結果區(qū)域", text: $result) 
  47.                 .padding() 
  48.         } 

4. 最后

 

文章通過一個簡單的例子描述了開發(fā)一個 iOS 原生應用的詳細步驟;實際應用中,可以結合具體的場景去定制開發(fā)不同的功能模塊

 

責任編輯:武曉燕 來源: AirPython
相關推薦

2018-05-14 10:56:25

APPiOS開發(fā)代碼

2020-02-17 13:45:27

抓取代碼工具

2021-01-06 05:23:15

ServiceMesh網絡阿帕網

2021-06-02 09:12:04

App自動化測試測試自動化

2018-10-11 21:00:18

2020-11-04 07:56:19

工具Linux 翻譯

2023-01-10 19:47:47

Redis原理多線程

2024-07-29 00:02:00

DemoVue開發(fā)

2019-06-25 10:46:04

Flutter開發(fā)APP

2024-02-19 00:00:00

Redis分布式

2021-05-14 13:30:17

Mybatis分表插件

2020-10-30 15:04:16

開發(fā)技能代碼

2021-10-27 06:49:34

線程池Core函數

2021-10-04 09:29:41

對象池線程池

2022-03-01 11:38:51

RPC框架后端

2020-09-14 11:30:26

HTTP3運維互聯網

2021-04-15 09:03:33

框架 Pytest測試

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2020-06-23 10:03:33

版本控制項目

2023-12-06 08:07:13

拖拽庫可視化
點贊
收藏

51CTO技術棧公眾號