本人iOS菜鳥一名寇蚊,在使用iOS開發(fā)工具XCode過程遇到的問題在此進(jìn)行記錄。
安裝CocoaPods
[**threshold@ThresholddeMacBook-Air**:**~**$] sudo gem install cocoapods
Password:
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: minitest-5.9.0.gem (100%)
Successfully installed minitest-5.9.0
Fetching: concurrent-ruby-1.0.2.gem (100%)
Successfully installed concurrent-ruby-1.0.2
Fetching: activesupport-5.0.0.1.gem (100%)
ERROR: Error installing cocoapods:
activesupport requires Ruby version >= 2.2.2.
安裝cocoapods報(bào)錯(cuò)提完。
sudo gem install activesupport -v 4.2.6
再安裝cocoapods就OK了.
- 使用Cocoapods
在項(xiàng)目文件夾下新建個(gè)文件:Podfile
在文件中寫
pod 'AVOSCloud'
然后關(guān)閉XCode.
打開終端。cd到這個(gè)目錄企软。
輸入
pod install
等待安裝矮瘟。
ok 啦瞳脓,以后打開項(xiàng)目就打開 .xcworkspace文件即可
1. 預(yù)覽StoryBoard
Shift Optional 單擊 會(huì)彈出如下的預(yù)覽位置選擇框
選擇一個(gè)位置即可進(jìn)行預(yù)覽StoryBoard
+ 號(hào)可以添加不同的設(shè)備。選中一個(gè)設(shè)備澈侠,按Delete鍵刪除設(shè)備
2. 快捷鍵
-
Ctrl 0
關(guān)閉顯示導(dǎo)航窗口 -
Ctrl 拖拽
StoryBoard View 相當(dāng)于鼠標(biāo)右鍵拖拽View常用來關(guān)聯(lián)View到代碼中或者設(shè)置View的Constraints(約束)
-
Command =
讓StoryBoard上的View大小自適應(yīng)文字 -
Shift 右擊
或Shift Ctrl + 單擊
在StoryBoard上可以選擇要選中的View對(duì)象劫侧。
就像下面這樣:
3. 屏幕約束
橫向是寬度,縱向是高度哨啃。
常規(guī) | 緊湊 | |
---|---|---|
常規(guī) | iPad | iPhone豎屏 |
緊湊 | iPhone6sPlus橫屏 | iPhone 4/5/6 橫屏 |
常規(guī):長度夠了 緊湊:長度不太夠用
為什么6sPlus 橫屏例外呢烧栋,因?yàn)?s屏幕很大,橫起來的時(shí)候原來的高度就用做橫向長度拳球,這相當(dāng)于iPad的寬或高(可粗略認(rèn)為iPad寬高相同)审姓,所以屬于常規(guī)
4. 雜項(xiàng)
- Align 對(duì)齊
-
Pin 固定
constraint to margins
勾選上是設(shè)置到margin的距離,如果是要充滿屏幕祝峻,一般去掉這個(gè)勾魔吐,四個(gè)方向填0,然后Add Constraints
aspect ration 是否自適應(yīng)縮放
- 刪除Swift文件呼猪,要Move to trash画畅,而不是移除引用.
- 本土化應(yīng)用
例如UITableView Cell中滑動(dòng)刪除按鈕默認(rèn)是英文的
- UIColor RGB顏色設(shè)置值時(shí)要記得除以255
shareRowAction.backgroundColor = UIColor(red: 0/255, green: 171/255, blue: 97/255, alpha: 1)
-
轉(zhuǎn)場
- Push deprecated 壓棧 帶返回按鈕
- Modal deprecated 模態(tài) 必須完成這個(gè)才能結(jié)束
-
嵌入導(dǎo)航控制器
- 菜單欄簡單點(diǎn)擊法:
Editor -> Embed in -> Navigation Controller
嵌入導(dǎo)航控制器后的效果:
- 菜單欄簡單點(diǎn)擊法:
-
Segue
- Show 目的視圖會(huì)被壓入導(dǎo)航棧頂部砸琅。導(dǎo)航條會(huì)提供一個(gè)后退按鈕宋距,用以返回源視圖。這是最常用的方式
- Show detail:與show類似症脂,但會(huì)替換源視圖谚赎。將沒有導(dǎo)航條和后退按鈕
- Present Modally: 模態(tài)顯示內(nèi)容。目的視圖會(huì)從底部向上彈出诱篷。通常用于顯示跟頁面連貫性不強(qiáng)的視圖壶唤。比如登錄(無論在哪個(gè)頁面,都可能調(diào)出此功能)
- Present as popover:iPad中常用棕所,模態(tài)顯示一個(gè)帶箭頭指向圓角矩形的彈窗闸盔,類似一個(gè)彈出菜單。就像漫畫書中兩個(gè)人對(duì)話中的對(duì)話框
轉(zhuǎn)場 Segue 傳遞數(shù)據(jù)
在可視化的過渡發(fā)生前琳省,源控制器會(huì)得到通知迎吵,觸發(fā) prepareForSegue()方法
可在prepareForSegue方法中傳遞相關(guān)數(shù)據(jù)給目的地控制器
首先需要給轉(zhuǎn)場 Segue 加一個(gè)標(biāo)識(shí)符(Identifier)
方法:選中轉(zhuǎn)場,屬性欄 identifier
在源控制器中寫:
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "showRestaurantDetail"{
let destVC = segue.destinationViewController as! RestaurantDetailViewController
destVC.restaurantName = restaurants[(tableView.indexPathForSelectedRow?.row)!]
destVC.restaurantImage = restaurantPictures[(tableView.indexPathForSelectedRow?.row)!]
}
}
- UIImageView 的 Mode
- Scale to Fill (拉伸 - 默認(rèn))
圖片適應(yīng)容器尺寸针贬,圖片可以背完整顯示击费,但是可能會(huì)被拉伸而改變比例
- Aspect Fit (居中)
圖片保持比例不變,可以完整顯示并居于容器中間
- Aspect Fill (平鋪)
圖片原始尺寸不變桦他,如果超出容器尺寸蔫巩,會(huì)被截?cái)嘁徊糠帧?br> 注意平鋪模式,多余的部分會(huì)覆蓋周圍視圖一部分,所以要先擇裁邊屬性圆仔。Clip SubViews
- iOS適配動(dòng)態(tài)字體
iOS在系統(tǒng)設(shè)置-輔助功能可以設(shè)置字體大小垃瞧。但是App需要對(duì)此進(jìn)行適配
適配方法就是在控件的字體上選擇一種文字樣式。
比如選擇“Headline”
- 無法在View上拖入新View
例如想在UIImageView上拖入U(xiǎn)IButton坪郭,但是拖不上去皆警。
這個(gè)時(shí)候需要拖一個(gè)View(就是View,不是UIButton等其他控件)到原來控件位置截粗,其他控件都拖到這個(gè)新View上面即可信姓。
- 在Modal窗口返回上一個(gè)界面 ( UnWind Segue )
從Button拖到另一個(gè)ViewController 選擇Modally就是模態(tài)顯示新窗口(無返回鍵)
先在上一個(gè)Cotroller編寫個(gè)方法(參數(shù)必須為UIStoryboardSegue),然后按照下面方式拖點(diǎn)擊事件即可關(guān)閉窗口绸罗。
@IBAction func closeSegue(segue:UIStoryboardSegue){
//返回時(shí)的操作意推,可以為空
}
- 啟用組件
例如啟用地圖組件(MapKit)
嗯 ,就是這么簡單珊蟀,打開地圖開關(guān)就能讓App擁有地圖相關(guān)功能
-
CoreData
- 生成CoreData實(shí)體類
- PageView 翻頁視圖
transition style 翻頁樣式菊值。
Scroll 滑動(dòng)
Page Curl 翻書樣式
-
TabBar
TabBar 轉(zhuǎn)場后不顯示TabBar
勾上 Hide Bottom Bar on Push
如果要在代碼中設(shè)置,就在轉(zhuǎn)場前設(shè)置目的視圖的BottomBar為hide
- 重構(gòu)StoryBoard(引用Storyboard)