項目搭建第一步:
工程名稱,公司名稱,公司標識(com.baidu),生成唯一標識符,
抽開iPhone和iPad.
3個都是單元測試,國內不不選擇,國外比較普遍。
A-General
Bundle Identifier:項目的唯一標識必須寫,作用:1.上傳APP到APPSTORE,2.做推送的時候。
原理:根據唯一標識符推送內容到手機和應用。
Version:1.0.迭代:1.1
Build:編譯版本,沒有用
Team:做真機調試的。拿好設備。帶回家。
Deployment Target:? 支持哪個版本以上。iphone的iOS系統的版本,表示應用只支持9.0以上。
選擇8.0以上。或者7.0以上。
如果6.0以上,就不要做了,6.0的應用活不了多久了。大部分都已經升級了。
而且6.0很麻煩。
Main Interface: Main,從storyBoard加載
Status Bar Style :程序啟動的狀態欄,程序啟動結束就沒有用了。
?Default黑色的狀態欄
?Light白色的狀態欄。
一般開發中都給它隱藏。為了看全屏,就給它隱藏。
如果動畫很快,你想看。就調 Debug ShowAnimation:動畫就可以很慢很慢
Embedded Binaries .a
Linked Frameworks and Libraries? frameworks
靜態庫。第三方庫
打包成靜態庫,就看不到文件內容了。只能看到.h。看不到源碼。
APP的名字:Info.plist.? Bundle name中文名字。就是APP command+shift+H顯示的名字
項目的名字的名稱:帶有中文的名字不行的。。。解碼有亂碼。
AppIcon Icon項目圖標:直接全選,拖進去就可以。
AppIcon Icon啟動圖片:
AppIcon Icons and Launch Images?
App Icons Source :AppIcon Icon項目圖標:直接全選,拖進去就可以。
Launch Images Source:點擊use Asset Catalog。多個箭頭,顯示的Brand Assets箭頭,直接全選,拖進去就可以。
因為
Launch Screen File :LaunchScreeen優先級比Launch Images的高。
所以兩個都設置的時候,就走的是Launch Screen 。
如果你要走launch Images就把Launch Screen刪掉。
如果xcode設置了不起作用。原因:1. Xcode緩存的問題,command+shift+K.? ? 2.可能是因為安裝了,都已經設置了。刪除程序。重新運行。就可以了。
如果通過LaunchImage設置啟動界面,那么屏幕的可視范圍由圖片決定。
沒有圖片5的話,上面有個條,下面有個條。尺寸編程320和480
注意點:如果你使用了LaunchImage,你必須讓美工提供各種尺寸的圖片。
LaunchScreen:Xcode6開始才有
好處:自動識別當前真機和模擬器的尺寸。
比如說LaunchScreen? Use Asset Catalog
LauchScreenstoryboard.拖個ImageView
距離邊界0,設置個圖片。讓美工提供一個可以拉伸的圖片。
好處:可以展示任何東西。
推薦用LauchScreen.
底層實現:把LaunchScreen截屏。生成一張圖片。
如何把LaunchScreen還原回到LaunchImage.
把LaunchScreen刪掉。然后,把LaunchImage生成一個新的。把老的LaunchImage和LaunchScreen刪掉就可以了
**********************************
項目架構,結構搭建
UI層
數據層
請求層
程序啟動原理
Main——uiapplicationMain: 1
1.創建uiapplication。打開網頁,發短信。打電話。.設置應用程序的提醒數字。.設置聯網狀態。設置狀態欄。
2.創建appdelegate代理對象。監聽整個app生命周期。處理內存警告。
3.開啟主運行循環。保證程序一直運行。runloop:主線程有個runloop自動開啟。每一個線程都有runloop
4.加載info.plist.判斷是否指定了main.storyboard.如果指定了,就會去加載main.storyboard.加載會做幾件事情。創建窗口。設置窗口跟控制器。顯示窗口。
5.程序啟動的時候調用didFinishLaunchingWithOptions:
Class-A-M,V,C
復制A。
tabbarcontroller會把第0個控制器的view添加進去。
設置tabbar按鈕的內容 由對應子控制器的tabBarItem的屬性決定。
設置navigation的內容,由棧頂控制器決定。
tabbarItem的子控制器是導航控制器。nav,nav1,publishVc,nav3,nav4
設置tabBar上按鈕內容:由對應的子控制器的tabBarItem屬性
0:nav.tabBarItem.title = @“精華”;
? ? nav.tabBarItem.imge =[uiimage imageName:@“”];
?? nav.tabBarItem.selectedImage =[uiimge imageName:@“”];
選中圖片被渲染:默認iOS7以后默認tabbar上的圖片都會被渲染。 倒三角=Rander As.? 點擊圖片文件夾。全選擇圖片。然后點擊倒三角===Rander As
Orange. Image一起設置
[Image imgeWithRenderingMode:UIImageRenderingModeAlways]
返回一個沒有渲染的圖片
抽出來一個uiimage的分類。快速創建一個沒有渲染的圖片。
Category
為了提示image的Name 改插件。如何去查找插件。插件有個地方指定安裝到什么地方。
打開插件。搜索plug.Plug插件的意思。
插件安裝什么地方。一般做xcode的配置。找有沒有做配置。install path
Build Settings Installation Directory.? ? /Library
桌面-option-前往資源庫
LolcalLized本地化翻譯。如果沒有本地化。就copy這個文件。
就會變成中文。資源庫就是Library.
資源庫-D-Xcode-Plugins-顯示包內容-resource-Completions.plist
plist編輯狀態:plist保存才行。編譯一下
選中標題顏色:應該是黑色的
選中標題的字體非常大。
發布按鈕顯示不出來
封裝:誰的事情誰管理,方便以后去維護代碼
自定義類:管理自己的業務
/********************************************************************************************************/
項目搭建第二部
********************關于tabbar的自定義*******************
調整按鈕的位置,在layoutsubview里面調整。
控件的center不能等于self.center.要用self.bounds.size.width和self.bounds.size.height
在layoutSubviews里面修改布局。這個方法的調用頻率比較高。
添加一次就想到懶加載,懶加載在里面一定要寫self addsubview,加到上面,就會有個強引用。不能會沒有。
按鈕設置背景圖片setBackgroundImage。
按鈕的尺寸沒有,可以button sizeToFit. 會根據按鈕的圖片或者文字的內容自適應,就不用設置尺寸了。
iskindOfClass
NSClassFromString(@“”)反編譯
tabBar有個item這個屬性,記錄有多少個按鈕
tabBar.item.count
/******************************************************************************************************/
常見的xib連線的問題:
1.如果不是和vc.h.m一起create的xib,寫init的時候,通常會報錯。因為會調用initWithNibName方法會判斷,有沒有指定nibName,然后判斷有沒有跟我的類名同名的xib。解決辦法是,file owner指定控制器,flie owner的view連線到xib的view
/**************************************************************************************/
屏幕高度,6p:736,? ?6:568,? ?5:568,? ?4:480
/***************************************************************************************/
CocoaPods 使用:
1.插件使用位置,product - CocoaPods - Create/Edit Podfile
2.命令行
(1)cd 工程文件-----? cd? 文件夾----touch? podfile ------打開open podfile------搜索需要導入的框架的描述 pod search,復制到podflid里面,然后安裝第三方框架?
?pod install - help??
pod - help
?查到命令no-repo-update
pod install --no-repo-update:跳過第三方倉庫的更新索引,一個月pod repo的一次就可以了。
pod install:安裝的依賴的第三方,根據podfile.lock安裝。第一次會根據podfile文件加載。
(podfile.lock第一次pod的時候就會自動生成文件。用來描述當前導入框架的版本號)
pod update:查看導入的框架有沒有新的版本,如果有新的版本就會去加載,并且更新pod.lock。
pod repo:管理第三方倉庫的索引,去尋找框架有沒有最新的版本,有就記錄。
以后只能去用xcworkspace 去打開。
/***************************************************************************************/
調用接口的時候,響應頭的原因:content-type.
/**************************************控制器,View*************************************************/
控制器,View
一、
1.1? xib必須要重新設置控件的frame.
1.2。ViewDidLayoutSubViews{
[super …]
因為會調用多次,所以不能創建控件
因為會根據布局創建frame,所以必須在這里設置frame,在viewDidLoad里面是沒有效果的。
設置frame
}
1.3? ? viewDidLoad{
[super ….];
創建控件
}
二、變更view的時候,一定要調用這個方法layoutIfNeeded
[UIView animateWithDuration:0.3 animations:^{
[self.view layoutIfNeeded];
}];
三、resizableImageWithCapInSets:
Image …… 拉伸處理,說明圖片要保護的區域
四:改變約束的是constant這個屬性。
/**************************************控制器,View*************************************************/