成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5 分鐘,帶你快速擼一個(gè) iOS App

移動(dòng)開發(fā) iOS
使用 Python 寫完爬蟲后,有時(shí)候我們需要在手機(jī)上實(shí)時(shí)對(duì)爬蟲進(jìn)行調(diào)度,或?qū)崟r(shí)展示爬蟲的結(jié)果,面對(duì)這種場(chǎng)景,我們可以將爬蟲邏輯寫成 API 部署到服務(wù)器,然后在移動(dòng)端編寫 App,通過界面元素控件直接調(diào)用接口即可,本篇文章,將和大家聊聊如何快速編寫一款 iOS 原生 App。

[[404179]]

本文轉(zhuǎn)載自微信公眾號(hào)「AirPython」,作者星安果。轉(zhuǎn)載本文請(qǐng)聯(lián)系A(chǔ)irPython公眾號(hào)。

1. 前言

大家好,我是安果!

使用 Python 寫完爬蟲后,有時(shí)候我們需要在手機(jī)上實(shí)時(shí)對(duì)爬蟲進(jìn)行調(diào)度,或?qū)崟r(shí)展示爬蟲的結(jié)果

面對(duì)這種場(chǎng)景,我們可以將爬蟲邏輯寫成 API 部署到服務(wù)器,然后在移動(dòng)端編寫 App,通過界面元素控件直接調(diào)用接口即可

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

2. 準(zhǔn)備

要實(shí)現(xiàn)原生 iOS 應(yīng)用,我們需要在 Mac 上使用 Xcode 編寫并進(jìn)行編譯

首先,設(shè)置 Xcode 的開發(fā)者賬號(hào)

打開 Xcode,左上角選擇 Xcode - Preferences - Accounts,點(diǎn)擊左下角的 + 號(hào),添加一個(gè)開發(fā)者賬號(hào)

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

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

PS:Swift 相比 OC,語(yǔ)法更加簡(jiǎn)潔明了

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

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

3. 實(shí)戰(zhàn)

實(shí)戰(zhàn)部分,我們以一個(gè)簡(jiǎn)單的登陸頁(yè)面來(lái)進(jìn)行講解

3-1 安裝依賴庫(kù)

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

比如,網(wǎng)絡(luò)請(qǐng)求庫(kù)「 Alamofire 」

項(xiàng)目地址:https://github.com/Alamofire/Alamofire

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

3-2 頁(yè)面布局

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

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

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

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

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

其中,

  • 圖片控件 Image
  • 文本輸入框控件 TextField
  • 選擇框控件 Toggle
  • 按鈕控件 Button
  1. import SwiftUI 
  2. import Combine 
  3.  
  4. struct ContentView: View { 
  5.      
  6.     //構(gòu)建頁(yè)面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.             //是否為測(cè)試 
  20.             Toggle(isOn: $isFavorited) { 
  21.                 Text("測(cè)試環(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.      

最后,定義變量和控件數(shù)據(jù)進(jìn)行雙向綁定

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

3-3 網(wǎng)絡(luò)請(qǐng)求及結(jié)果展示

為 Button 控件設(shè)置點(diǎn)擊事件,使用 Alamofire 進(jìn)行網(wǎng)絡(luò)請(qǐng)求,最后將結(jié)果展示寫入到結(jié)果控件綁定到數(shù)據(jù)中去即可

  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("請(qǐng)求地址:"+url) 
  14.                  
  15.                 AF.request(url).responseJSON { response in 
  16.                     switch response.result { 
  17.                     case .success(let json): 
  18.                         //轉(zhuǎn)為Dictionary 
  19.                         let post_paramsValue = json as! Dictionary<String,Any
  20.                          
  21.                         //__NSCFString 
  22.                         let msg = post_paramsValue["msg"]! 
  23.                         //轉(zhuǎn)為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 = "網(wǎng)絡(luò)異常,請(qǐng)稍后再試!" 
  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("結(jié)果區(qū)域", text: $result) 
  47.                 .padding() 
  48.         } 

4. 最后

 

文章通過一個(gè)簡(jiǎn)單的例子描述了開發(fā)一個(gè) iOS 原生應(yīng)用的詳細(xì)步驟;實(shí)際應(yīng)用中,可以結(jié)合具體的場(chǎng)景去定制開發(fā)不同的功能模塊

 

責(zé)任編輯:武曉燕 來(lái)源: AirPython
相關(guān)推薦

2018-05-14 10:56:25

APPiOS開發(fā)代碼

2020-02-17 13:45:27

抓取代碼工具

2021-01-06 05:23:15

ServiceMesh網(wǎng)絡(luò)阿帕網(wǎng)

2021-06-02 09:12:04

App自動(dòng)化測(cè)試測(cè)試自動(dòng)化

2018-10-11 21:00:18

2020-11-04 07:56:19

工具Linux 翻譯

2023-01-10 19:47:47

Redis原理多線程

2019-06-25 10:46:04

Flutter開發(fā)APP

2024-07-29 00:02:00

DemoVue開發(fā)

2024-02-19 00:00:00

Redis分布式

2021-05-14 13:30:17

Mybatis分表插件

2020-10-30 15:04:16

開發(fā)技能代碼

2020-09-14 11:30:26

HTTP3運(yùn)維互聯(lián)網(wǎng)

2021-10-27 06:49:34

線程池Core函數(shù)

2020-06-23 10:03:33

版本控制項(xiàng)目

2022-02-17 09:24:11

TypeScript編程語(yǔ)言javaScrip

2021-10-04 09:29:41

對(duì)象池線程池

2022-03-01 11:38:51

RPC框架后端

2021-04-15 09:03:33

框架 Pytest測(cè)試

2020-11-23 16:23:59

CSS設(shè)計(jì)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久精品视频一区二区三区 | 国产色爽| 日韩一区精品 | 久久99精品久久久久 | 亚洲精品av在线 | 亚洲成av人片在线观看无码 | 精品九九九 | 欧美一区二区三区久久精品 | 欧美午夜精品久久久久久浪潮 | 国产日韩欧美在线观看 | 国产亚洲精品久久午夜玫瑰园 | 免费观看一级毛片视频 | 欧美日韩黄色一级片 | 天天久| 欧美精品三区 | 亚洲欧洲综合av | 国产亚洲日本精品 | 久久亚洲欧美日韩精品专区 | 亚洲一区二区三区视频免费观看 | 99精品免费在线观看 | 国产成人短视频在线观看 | 91看片免费版 | 成人美女免费网站视频 | 欧美理伦片在线播放 | 亚洲网站在线观看 | 国产99久久精品一区二区永久免费 | 国产高清免费视频 | 久久久久久久一区二区三区 | 午夜精品在线 | 成人欧美一区二区三区在线观看 | 日韩欧美一区二区三区 | 久久激情视频 | 成人精品久久日伦片大全免费 | 成人精品一区二区 | 久草中文在线 | 成人亚洲视频 | 正在播放亚洲 | 日韩在线免费播放 | 中文字幕一区二区三区四区五区 | 精品九九九 | 免费亚洲一区二区 |