前言
把Beginning iOS 8 Programming with Swift這本出自有大量高質量iOS教學資源的AppCoda 的書刷了一邊,雖然書針對的是沒有編程語言基礎的初學者,但有OC基礎的我看這本書,還是收獲很大,一方面接觸了更多的Swift代碼更熟悉Swift語言在iOS開發(fā)的運用,也是算一種過渡;另一方面 收獲了幾個開發(fā)中有用的知識點和iOS8所帶來的新的API,以及接觸一些自己原先也沒用過的API,比如PageViewController,UISearchController的基本使用.因此記錄下我覺得有用到的知識點,萬一以后碰到類似問題卻忘記了如何處理,也可以幫助自己回憶.
隱藏statuBar:prefersStatusBarHidden 返回 true
override func prefersStatusBarHidden() -> Bool {
return true
}
圖片裁剪成圓形
cell.thumbnailImageView.layer.cornerRadius = cell.thumbnailImageView.bounds.size.width / 2
cell.thumbnailImageView.clipsToBounds = true
iOS8可以給Cell添加額外Action,使用新增的代理方法
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
let shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Share") { (rowAction, indexPath) -> Void in
print("share action")
}
shareAction.backgroundColor = UIColor.grayColor()
let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete") { (rowAction, indexPath) -> Void in
self.names.removeAtIndex(indexPath.row)
self.checjedNames.removeAtIndex(indexPath.row)
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
return [deleteAction,shareAction]
}
iOS8實現有Label控件的高度自適應Cell(簡單形式)
- 給cell的視圖控件添加完整布局
- Label的numberOfLines設置為0
tableView.rowHeight = UITableViewAutomaticDimension
####改變狀態(tài)欄文字顏色的兩個方法
1. preferredStatusBarStyle 當前控制器為根窗口的根控制器時設置才會有效,否則會被根控制器覆蓋StatusBar樣式 *eg. 導航控制器下的子控制器設置StatusBarStyle后仍看不到效果*
2. `UIApplication.sharedApplication().statusBarStyle = .LightContent` 在plist文件中添加View controller-based status bar appearance 字段,設為NO; 才會對程序中所有控制器的StatusBarStyle 生效
UIView Aniamtion 中 視圖想要同時對多個transform進行動畫
使用方法CGAffineTransformConcat(transform1, transform2)
結合兩個transform進行動畫,并且動畫前和動畫后都需要**一致設置**,才有效
####iOS8 快速在imageView上實現模糊視圖
```swift
var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
var blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = imageView.bounds
imageView.boundsbackgroundImageView.addSubview(blurEffectView)
UIImagePickerController的使用
必須先調用方法isSourceTypeAvailable(type)
,對當前設備支持的type進行對比, 并且其delegate對象還要實現UINavigationControllerDelegate
CoreData關鍵對象
ManagedObjectContext: 對應一個存儲模型對象數據的環(huán)境 (可利用AppDelegate獲取)
ManagedObject: 需要的存儲模型對象
Persistent Store: 數據持久化的地方
Persistent Store Coordinator : 管理Persistent Store和ManagedObject存儲
CoreData存儲數據fetch和增刪
- 在tableView展示的數據, CoreData對其數據的增刪操作要使用NSFetchedResultController 對象來,提高性能;
- 實現NSFetchedResultControllerDelegate 方法,調用其代理方法,在ChangeContent前后中,設置tableView的beginUpdate 到endUpdate,使得tableView的cell對應刷新
- 數據增刪操作后,一定要同時更新模型數據
Debug CoreData
在Scheme中添加Arguments 為 -com.apple.CoreData.SQLDebug 1,加載運行.
使用UISearchController
在其他控制器使用UISearchController必須設置definePresentationContext 為true, 以及設置其searchResultUpdater 代理對象,實現代理方法進行關鍵字搜索
使用PageViewController
給PageViewController的子控制器使用約束布局時,存在的Top Layout Guide 影響布局效果