前言
把Beginning iOS 8 Programming with Swift这本出自有大量高质量iOS教学资源的AppCoda 的书刷了一边,虽然书针对的是没有编程语言基础的初学者,但有OC基础的我看这本书,还是收获很大,一方面接触了更多的Swift代码更熟悉Swift语言在iOS开发的运用,也是算一种过渡;另一方面 收获了几个开发中有用的知识点和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
####改变状态栏文字颜色的两个方法
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: 对应一个存储模型对象数据的环境 (可利用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 影响布局效果