Tutorial: Basics
創(chuàng)新互聯(lián)建站-云計算及IDC服務(wù)提供商,涵蓋公有云、IDC機房租用、服務(wù)器主機托管、等保安全、私有云建設(shè)等企業(yè)級互聯(lián)網(wǎng)基礎(chǔ)服務(wù),服務(wù)電話:13518219792
教程:基礎(chǔ)知識
本教程帶你了解一個應(yīng)用程序的基礎(chǔ)知識,通過創(chuàng)建一個簡單的 用戶界面 ,并且添加自定義行為來轉(zhuǎn)換工作應(yīng)用程序的接口。
跟隨這個教程學(xué)習(xí)iOS應(yīng)用程序開發(fā)的基礎(chǔ),包括:
如何使用Xcode創(chuàng)建并管理項目
如何識別Xcode項目的關(guān)鍵部分
如何添加標(biāo)準(zhǔn)用戶界面元素到你的應(yīng)用程序
如何構(gòu)建和運行應(yīng)用程序
在即結(jié)束本教程之后,你將擁有一個看上去如下所示的應(yīng)用程序:
為簡單起見,本教程項目只有一個iPhone界面,但是你可以在開發(fā)iPad應(yīng)用程序時使用完全相同的工具和技術(shù)。這個教程使用Xcode 5.0 和 iOS SDK 7.0。
Create a New Project
創(chuàng)建一個新工程
想要開始開發(fā)應(yīng)用程序,需要創(chuàng)建一個新的Xcode工程。
Xcode 包括幾個內(nèi)建的應(yīng)用程序模板,你能夠使用他們開發(fā)通用模式的iOS應(yīng)用程序,例如游戲、基于導(dǎo)航標(biāo)簽的應(yīng)用程序、和基于表格視圖的應(yīng)用程序。這些模板的大部分在開始工作時都為你都配置了接口和源代碼文件。在本教程中, 你將從最基本的空應(yīng)用程序(Empty Application)開始。
使用空應(yīng)用程序模板將幫助你了解一個iOS應(yīng)用程序的基礎(chǔ)結(jié)構(gòu),和如何使內(nèi)容顯示在屏幕上。在你學(xué)到這一切是如何工作之后,你能夠為你的應(yīng)用程序使用其他模板來節(jié)省配置的時間。
創(chuàng)建一個空的項目
1.從目錄/Applications 打開Xcode
Xcode歡迎窗口出現(xiàn)。
如果一個工程窗口而不是歡迎窗口出現(xiàn),不要擔(dān)心——你或許創(chuàng)建或打開了一個以前的Xcode項目。只要使用下面步驟中的菜單項來創(chuàng)建項目。
2.在歡迎窗口,點擊“創(chuàng)建一個新的Xcode 項目(Create a new Xcode project)”(或者選擇File > New > Project)。
Xcode打開一個新窗口且顯示一個對話框,在對話框中你可以選擇一個模板。
3.在左側(cè)對話框左側(cè)的iOS部分,選擇應(yīng)用程序(Application)。
4.在對話框的主區(qū)域,點擊空應(yīng)用程序(Empty Application)然后點擊Next。
5.在出現(xiàn)的對話框中,命名你的應(yīng)用程序,且為你的項目選擇附加選項。
使用如下值:
Product Name:ToDoList
Xcode 使用你輸入的名稱命名你的應(yīng)用程序和項目。
Company Identifier: 你的公司標(biāo)識,如果你有的話。如果你沒有,使用com.example.
Class Prefix:XYZ
Xcode 使用帶有前綴的類名。Objective-C 的類的名字必須是任何框架或你可能使用的束中是獨一無二的。想要保持獨特的類名,所有的類使用前綴是通常的做法。兩個字母前綴是蘋果保留用于框架的類,所以要使用三個或更長的字母作為前綴。
6.從彈出的設(shè)備菜單中選擇iPhone。
正如已經(jīng)提到的,用iPhone界面創(chuàng)建一個應(yīng)用程序是開始時最簡單的方法。這些技術(shù)同樣適用于iPad和通用的應(yīng)用程序。
7.點擊Next。
8.在出現(xiàn)的對話框中,為你的工程選擇一個保存位置并點擊創(chuàng)建(Create)。
Xcode在窗口中打開你的新工程(叫做workspace window,工作區(qū)窗口),應(yīng)該類似于下圖:
Get Familiar with Xcode
熟悉Xcode
Xcode包含了創(chuàng)建一個應(yīng)用程序所需的所有內(nèi)容。它不僅組織創(chuàng)建的應(yīng)用程序的文件,而且它還提供代碼編輯器和界面元素,允許你創(chuàng)建并運行應(yīng)用程序,而且還包括一個強大的集成調(diào)試器。
花一點時間來熟悉Xcode 的工作區(qū)。在本教程剩下的部分中,你將使用下面窗口中表示的控制部分。點擊不同的按鈕以了解它是如何工作的。如果你想要更多的關(guān)于界面上個部分的信息,請閱讀它的幫助文檔——你可以通過Control+點擊Xcode的區(qū)域且在彈出的快捷菜單中找到它們。
Run iOS Simulator
運行iOS模擬器
因為你的項目基于一個Xcode模板,所以基本的應(yīng)用程序環(huán)境是自動為你設(shè)置好的。即使你沒有編寫任何代碼,你也能夠構(gòu)建并運行一個空應(yīng)用程序模板而不必添加任何額外的配置。
構(gòu)建并運行你的應(yīng)用程序,及就可以使用 iOS Simulator(iOS模擬器)應(yīng)用程序,它包含在Xcode中。Xcode 模擬器給你一個你的應(yīng)用程序運行在iOS設(shè)備上的時候所擁有的外觀和行為的一種方式。
iOS模擬器可以模擬多種類型的硬件——iPad、iPhone的各種不同的尺寸,等等。因此,你能夠模擬在所有設(shè)備上進(jìn)行開發(fā)。在本教程中,使用iPhone Retina(4-inch)選項。
在iOS模擬器上運行你的應(yīng)用程序
1.在Xcode工具條上彈出的方案(Scheme)菜單中選擇 iPhone Retina (4-inch) 。
繼續(xù)瀏覽這個菜單,看看其他的可用在iOS模擬中的硬件選項。
2.點擊Run按鈕,位于Xcode工具條左上角。
或者,你可以選擇 Product > Run (或者 Command+R)。
如果這是你第一次運行應(yīng)用程序,Xcode會問你是否在你的Mac上授權(quán)開發(fā)者模式。開發(fā)者模式允許Xcode訪問某些調(diào)試屬性而不必每次填寫你的密碼。跟隨提示,決定是否允許使用開發(fā)者模式。如果你不選擇允許,你或許會被要求填寫密碼。本教程假設(shè)你的開發(fā)者模式已經(jīng)啟動。
3.觀察Xcode工具條的構(gòu)建進(jìn)度直到完成。
Xcode在activity viewer顯示關(guān)于構(gòu)建進(jìn)度的信息,它在工具條的中間位置。
在Xcode完成構(gòu)建后,iOS模擬器開始自動啟動。它在第一次運行的時候或許需要一段時間。
iOS模擬器在iPhone模式下打開,就像你指定的一樣。在模擬器的iPhone屏幕上打開你的應(yīng)用程序。
如其名稱 空應(yīng)用程序,這個模板只顯示一個白色的屏幕。其他的模板有更復(fù)雜一點的行為。重要的是在擴展它到你的應(yīng)用程序之前理解模板的使用。運行沒有修改的模板是開始開發(fā)的聰明方式。
探討了應(yīng)用程序之后,通過選擇iOS Simulator > Quit iOS Simulator (或者Command+Q)退出iOS模擬器。
Review the Source Code
查看源代碼
空應(yīng)用程序模板擁有一些現(xiàn)有的源代碼文件,它們設(shè)置應(yīng)用程序環(huán)境。大部分的工作通過UIApplicationMain 函數(shù)完成,它是自動調(diào)用你的工程的main.m 源文件。UIApplicationMain函數(shù)創(chuàng)建一個應(yīng)用程序?qū)ο?,它為你的?yīng)用程序在iOS系統(tǒng)上工作設(shè)置基礎(chǔ)結(jié)構(gòu)。包括創(chuàng)建運行循環(huán)( run loop)為應(yīng)用程序提供輸入事件。
你不必直接處理main.m源文件,但了解他是如何工作的也非常有意思。
查看main.m源文件
1.確保項目導(dǎo)航區(qū)域的導(dǎo)航器打開。
項目導(dǎo)航器(project navigator)顯示項目中所有的文件。 如果項目導(dǎo)航器沒有打開,點擊導(dǎo)航器選擇條最左側(cè)的按鈕。
2.在工程導(dǎo)航器中通過點擊緊挨著它的展開三角(disclosure triangle)打開支持文件(Supporting Files)文件夾。
3.選擇main.m.
Xcode在窗口的主編輯區(qū)打開源代碼文件,如下圖所示:
如果你雙擊這個文件,你將看到他會在一個單獨的窗口中打開。你能夠選擇兩種方式打開它。
在main.m 中的main函數(shù) 在自動釋放池中調(diào)用UIApplicationMain 函數(shù)。
.@autoreleasepool{
.
.returnUIApplicationMain(argc,argv,nil,NSStringFromClass([XYZAppDelegateclass]));
.
.}
.
聲明為你的應(yīng)用程序提供內(nèi)存管理支持。自動引用計數(shù)(Automatic Reference Counting (ARC))通過編譯器跟蹤對象的擁有者來簡化內(nèi)存管理。@autoreleasepool 是基礎(chǔ)內(nèi)存管理的一部分。
調(diào)用UIApplicationMain 創(chuàng)建了兩個應(yīng)用程序的重要初始化組件:
一個UIApplication 類的實例,叫做應(yīng)用程序?qū)ο螅?strong>application object)。
應(yīng)用程序?qū)ο蠊芾響?yīng)用程序事件循環(huán)和協(xié)調(diào)其他高級應(yīng)用程序的行為。這個類,定義在UIKit框架中,不需要你編寫任何額外的代碼來讓他工作。
一個XYZAppDelegate 類的實例, 叫做應(yīng)用程序委托(app delegate)。
Xcode在設(shè)置空應(yīng)用程序模板的時候同時創(chuàng)建了這個類。應(yīng)用程序委托創(chuàng)建一個窗口用來放置應(yīng)用程的內(nèi)容,而且為應(yīng)用程序狀態(tài)轉(zhuǎn)換的提供地方。這個窗口是你編寫自定義的應(yīng)用程序級代碼的地方。像所有的類一樣,XYZAppDelegate 類在應(yīng)用程序中定義了兩個源代碼文件:接口文件XYZAppDelegate.h和實現(xiàn)文件XYZAppDelegate.m。
這兒書名應(yīng)用程序?qū)ο蠛蛻?yīng)用程序委托是如何交互的。當(dāng)你的應(yīng)用程序啟動時,應(yīng)用程序?qū)ο笳{(diào)用在應(yīng)用程序委托中的定義方法給你的自定義的代碼去做它的工作——這是一個應(yīng)用程序被執(zhí)行的行為有趣的地方。想要理解應(yīng)用程序委托更深層次的作用,查看你的應(yīng)用程序接口文件,在工程導(dǎo)航器中選擇XYZAppDelegate.h。應(yīng)用程序委托接口包含一個單獨的屬性:window。通過這個屬性,應(yīng)用程序代理跟蹤所有畫在這個窗口中的你的應(yīng)用程序的內(nèi)容。
接下來,查看應(yīng)用程序委托實現(xiàn)文件。要做到這點,選擇工程導(dǎo)航器中的XYZAppDelegate.m。應(yīng)用程序委托實現(xiàn)包含重要方法的“骨架(skeletons)”。這些預(yù)定義的方法允許應(yīng)用程序?qū)ο髞砗蛻?yīng)用程序委托進(jìn)行通話。在一個重要運行事件期間——應(yīng)用程序?qū)ο笳{(diào)用在應(yīng)用程序委托里的類似方法,給他一個機會來做出適當(dāng)相應(yīng)。你不需要做任何特殊的事情來確保這些方法在正確的時間被調(diào)用——應(yīng)用程序?qū)ο鬄槟闾幚砹诉@部分工作。
所有這些自動實現(xiàn)的方法都擁有默認(rèn)的行為。如果你不識閑這些骨架或者從你的XYZAppDelegate.m 文件中刪除他們,你還是會在這些方法被調(diào)用的時候得到默認(rèn)的行為。使用這些骨架來添加額外的自定義代碼,已使得這些方法被調(diào)用的時候得到你想要的效果。舉個例子,在XYZAppDelegate.m文件的第一個方法包含幾行代碼,這些方法設(shè)置應(yīng)用程序窗口并且在你第一次運行你的應(yīng)用程序的時候得到一個白色的背景。在本教程中,你將不會使用任何自定義的應(yīng)用程序委托代碼,所以繼續(xù)且移除那些設(shè)置窗口為純白色背景的代碼。
設(shè)置應(yīng)用程序委托實現(xiàn)文件
1.在XYZAppDelegate.m中找到application:didFinishLaunchingWithOptions: 方法。
它是這個文件的第一個方法。
2.從這個方法中刪除頭三行代碼。如下所示:
.-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
.
.{
.
.returnYES;
.
.}
3.
4.
Xcode自動保存更改。Xcode繼續(xù)跟蹤且保存你所有的工作。(你可以通過選擇Edit > Undo Typing來不做你的修改。)
Create a Storyboard
創(chuàng)建故事板(Storyboard)
此時,你已經(jīng)準(zhǔn)備好為你的應(yīng)用程序創(chuàng)建一個故事板。故事板是一個應(yīng)用程序用戶界面的可視化表現(xiàn),顯示屏幕里包含的內(nèi)容和他們之間的轉(zhuǎn)換。使用故事板來安排流——或者故事——來駕馭你的應(yīng)用程序。
想要看到故事板如何融入到一個應(yīng)用程序中,在這個教程里你將手動創(chuàng)建一個且把它添加到你的應(yīng)用程序中。與你開始的空應(yīng)用程序模板不懂,其他Xcode模板包含預(yù)置的故事板提供視圖、視圖控制器、和關(guān)聯(lián)的源代碼文件(這些源代碼文件為這個類型的應(yīng)用程序設(shè)置了基本的架構(gòu))。在你手動設(shè)置完故事板之后,你將看到如何把各部分放在一起。然后你將能開始一個附帶有故事板的項目模板,浙江為你節(jié)省一些花銷。
創(chuàng)建一個新的故事板
1.選擇 File > New > File (或者 Command+N).
出現(xiàn)一個對話框,提示你為你的新文件選擇模板。
2.在左側(cè),在iOS下選擇用戶界面(User Interface)
3.點擊故事板,點擊Next。
4. 在Devices選項,選擇iPhone。
5.點擊Next。
出現(xiàn)一個對話框,提醒你選擇一個位置和命名你的新故事板。
6.在Save As字段里,命名文件為Main.
7.確保文件保存到和你的項目所在的目錄下。
8.在Group 選項,選擇ToDoList。
9.在Targets, 選擇ToDoList旁邊的復(fù)選框。.
這個選項告訴Xcode當(dāng)構(gòu)建你的應(yīng)用程序的時候包含這個新的故事板。
10. 點擊創(chuàng)建。
一個新的故事板文件被創(chuàng)建,且添加到了你的項目。你將在這個文件中安排應(yīng)用程序的內(nèi)容。
現(xiàn)在你需要高旭Xcode你想要使用這個故事板作為應(yīng)用程序的接口。當(dāng)它啟動的時候,應(yīng)用程序?qū)ο髾z查應(yīng)用程序是否有主界面配置。如果有,當(dāng)應(yīng)用程序啟動的時候,應(yīng)用程序?qū)ο蠹虞d定義的故事板。
設(shè)置故事板作為應(yīng)用程序的主界面。
1.在工程導(dǎo)航器,選擇你的工程。
在工作空間窗口的編輯區(qū)域,Xcode顯示工程編輯器,它允許你查看和編輯關(guān)于你的應(yīng)用程序是如何構(gòu)建的細(xì)節(jié)。
2.在Targets下,選擇ToDoList。
如果項目和目標(biāo)列表沒有現(xiàn)在項目編輯器中,點擊編輯器邊框左上角的多層三角形來顯示這個列表。
3.選擇General選項卡。
4.在部署信息(Deployment Info)下,找到主界面選項。
5.選擇你的故事板,Main.storyboard.
Add a Scene to Your Storyboard
添加一個場景到你的故事板
現(xiàn)在你有了個故事板,是時候開始添加應(yīng)用程序內(nèi)容了。Xcode提供一個對象庫,你能向里面添加故事板文件。它們當(dāng)中的一些是用戶界面元素,這些元素屬于視圖,例如按鈕和文本字段。另外一些定義了你的應(yīng)用程序的行為,但它們自身不出現(xiàn)在屏幕上,例如視圖控制器和手勢識別器。
To start, you’ll add a view controller to your storyboard. A view controller manages a corresponding view and its subviews. You’ll learn more about the roles of views and view controllers in the next chapter首先,你將添加一個視圖控制器到你的故事板。一個視圖控制器管理一個相應(yīng)的視圖和它的子視圖。你在下一章App Development Process將學(xué)習(xí)到更多的關(guān)于視圖和視圖控制器的作用。
添加一個視圖控制器到你的故事板
1.在工程導(dǎo)航器中,選擇Main.storyboard.
在編輯區(qū)的Interface Builder(可視化界面編輯器)中打開故事板。因為故事板是空的,所以你看的是一個空白的畫布(canvas)。已使用這個畫布來添加和安排用戶界面元素。
2.打開對象庫。
對象庫Object library出現(xiàn)在工區(qū)去的底部。如果你沒有看到對象庫,你可以點擊它的按鈕,它在庫選擇器條上從左開始的第三個按鈕。(若果你沒有看到工具去,你可以通過選擇View > Utilities > Show Utilities來顯示它。)
列表顯示了每個對象的名字、描述和可視化表示。
3.將一個視圖控制器對象從列表中拖拽到畫布。
如果你沒有在對象庫中找到這個對象的標(biāo)題“View Controller”,通過在列表底部的文本字段輸入對象來過濾列表。輸入View Controller你將會在過濾的列表中看到唯一的視圖控制器對象。
在這一點上,應(yīng)用程序的故事板包含一個場景。在畫布上指向左邊場景的箭頭是初始化場景指示器(initial scene indicator),這意味著這個場景是在應(yīng)用程序開始的是后就被加載。現(xiàn)在,這個你看到的在畫布中的場景包含一個單獨的視圖,它被一個視圖控制器管理。如果你在iOS模擬器上運行應(yīng)用程序,至二個視圖是你在設(shè)備屏幕上看到的內(nèi)容。在iOS模擬器上運行你的應(yīng)用程序來核實所有的東西都正確的配置是非常有用的。在這樣做之前,添加一些當(dāng)你在運行應(yīng)用程序的時候可以被看到的東西到場景中。
談價一個標(biāo)簽到你的場景中
1.在對象庫,找到標(biāo)簽(Label)對象。
如果你在過濾器文本字段輸入文本,你或許需要清除它的內(nèi)容在你看到標(biāo)簽對象前。你也能在過濾器字段里輸入Label 來快速查找標(biāo)簽對象。
2.從列表中拖拽標(biāo)簽對象到你的場景。
3.拖拽標(biāo)簽到場景的中間,直到橫豎標(biāo)線出現(xiàn)。
當(dāng)你看到如下圖的情況是,停止拖拽:
標(biāo)線意味著標(biāo)簽現(xiàn)在正在正中間。(標(biāo)線只有在拖拽或在它們旁邊改變對象的尺寸的時候出現(xiàn),所以它們將在你放手標(biāo)簽對象的時候消失。)
4.雙擊標(biāo)簽的文本來選擇編輯它。
5.輸入Hello, World! 然后按返回鍵。
如果有必要,重定位這個標(biāo)簽。
Test Your Changes
測試你的改變
在iOS模擬器上運行你的應(yīng)用程序是一個定期檢查每件事情是否如你希望般工作的偉大的方法。此時你的應(yīng)用程序應(yīng)該啟動且加載你在主故事板上創(chuàng)建的場景。點擊Xcode上的運行按鈕。已將看到如下圖所示的內(nèi)容:
如果你沒有看到你加載的標(biāo)簽,請確保你創(chuàng)建的故事板已配置為應(yīng)用程序的主界面,且確保你移除了應(yīng)用程序委托中的創(chuàng)建空白窗口的代碼。這非常有必要,回去且重復(fù)這些部分的步驟。
這也是一個很好的機會來試驗?zāi)隳芴砑邮裁吹浇缑?。通過如下選擇,探索Interface Builder:
標(biāo)簽的文字。
標(biāo)簽的字體大小。
字體的顏色。
Build the Basic Interface
構(gòu)建基本界面
現(xiàn)在你能在場景中安置內(nèi)容,是時候構(gòu)建基本的界面,為你添加一個新的項目到待辦事項清單的場景。
想要添加一個項目到待辦事宜清單,你需要一個信息:項目的名字。你從一個文本字段得到這個信息。文本字段是界面元素,它讓用戶使用鍵盤輸入單行的文本。但首先,你需要移除你之前添加的標(biāo)簽。
從場景中移除標(biāo)簽
1.點擊標(biāo)簽選擇它。
2.按刪除鍵。
標(biāo)簽被從場景中移除。如果這不是你想要的,你可以選擇Edit > Undo Delete Label。(所有編輯器都有一個Edit > Undo command來不做最近的操作。)
現(xiàn)在你有有了一個空白的畫布,添加一個待辦事宜項目來創(chuàng)建一個場景。
添加文本字段到你的場景
1.這很有必要,打開對象庫。
2.從列表中拖拽文本字段對象到你的場景。
3.拖拽文本字段到離屏幕底部三分之二的位置。
4.如有必要,點擊文本字段顯示調(diào)整處理。
你通過拖拽一個UI元素的resize handles來調(diào)整它,它是一個出現(xiàn)在元素邊界上的白色小矩形。你可以通過選擇元素來顯示它的resize handles。在這個例子中,文本字段應(yīng)該已經(jīng)被選擇,因為你剛剛停止拖拽它。如果你的文本字段看上去像下面的一樣,你已經(jīng)準(zhǔn)備好調(diào)整它了。如果不是,在畫布上選擇它。
5.調(diào)整文本字段的左邊和右邊直到你看到垂直引導(dǎo)線出現(xiàn)為止。
當(dāng)你看到如下圖所示時,停止調(diào)整文本字段。
雖然在你的場景中有了一個文本字段,但是沒有告訴用戶要向這個字段輸入的說明。使用文本字段的占位符文本來提示用戶要輸入一個新的待辦事宜項目的名字。
設(shè)置文本字段占位符文本
1.選中文本字段,在工具區(qū)域打開屬性檢查器 。
當(dāng)你選擇檢查器選擇器條從左開始第四個按鈕的時候,屬性檢查器( Attributes inspector)會出現(xiàn)。 它讓你編輯你的故事板中的一個對象的屬性。
2.在屬性檢查器中,找到字段標(biāo)簽占位符(Placeholder)并且輸入New to-do item.
想要在文本字段顯示新的占位符,按回車鍵。
檢查點:在iOS模擬器上運行你的應(yīng)用程序來確保你創(chuàng)建的場景如你希望的一樣工作。亦應(yīng)該能夠點擊文本框的內(nèi)部并且能夠用鍵盤輸入字符串。
Recap
回顧
你現(xiàn)在可以通過使用故事板創(chuàng)建一個基本接口。在接下來的教程中,你將會學(xué)到更多關(guān)于添加交互到你的界面,以及編寫代碼來創(chuàng)建自定義的行為。這些教程中之間的章節(jié),指導(dǎo)你在使用應(yīng)用程序的時候,讓你把概念輔助實施。
Setup
App Development Process
Copyright 2014 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2013-10-22
文章標(biāo)題:YourfirstiOSapp(2)——Tutorial:Basics
分享路徑:http://muchs.cn/article20/gddeco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、、全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計公司、外貿(mào)建站、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)