Beginning iOS 8 Programming with Swift小记

前言

把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(简单形式)

  1. 给cell的视图控件添加完整布局
  2. 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 影响布局效果

你可能感兴趣的:(Beginning iOS 8 Programming with Swift小记)