美文网首页
Beginning iOS 8 Programming with

Beginning iOS 8 Programming with

作者: One9398 | 来源:发表于2016-02-23 08:34 被阅读135次

    前言

    把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

          本文链接:https://www.haomeiwen.com/subject/jwavkttx.html