iOS开发——项目实战Swift篇&swift 2.0项目开发总结二(开发常用)

swift 2.0项目开发总结二(开发常用)

一:相册中选择相片到App指定位置

随 着相机像素的提高,实际用户选择的图片都是很大的,有的高达5.6M,如果直接使用用户选着的图片,非常消耗内存,并且也用不到这么高像素的图片,可以当 用户选着好图片后,在UIImagePickerController对应的代理方法中,先将图片进行重新绘制为需要的大小,在设置给iconView

 1 /// MARK: 摄像机和相册的操作和代理方法
 2 extension MeViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
 3
 4   /// 打开照相功能
 5   private func openCamera() {
 6       if UIImagePickerController.isSourceTypeAvailable(.Camera) {
 7           pickVC.sourceType = .Camera
 8           self.presentViewController(pickVC, animated: true, completion: nil)
 9       } else {
10           SVProgressHUD.showErrorWithStatus("模拟器没有摄像头,请链接真机调试", maskType: SVProgressHUDMaskType.Black)
11       }
12   }
13
14   /// 打开相册
15   private func openUserPhotoLibrary() {
16       pickVC.sourceType = .PhotoLibrary
17       pickVC.allowsEditing = true
18       presentViewController(pickVC, animated: true, completion: nil)
19   }
20
21   func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
22       // 对用户选着的图片进行质量压缩,上传服务器,本地持久化存储
23       if let typeStr = info[UIImagePickerControllerMediaType] as? String {
24           if typeStr == "public.image" {
25               if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
26                   var data: NSData?
27                   let smallImage = UIImage.imageClipToNewImage(image, newSize: iconView!.iconButton.size)
28                   if UIImagePNGRepresentation(smallImage) == nil {
29                       data = UIImageJPEGRepresentation(smallImage, 0.8)
30                   } else {
31                       data = UIImagePNGRepresentation(smallImage)
32                   }
33
34                   if data != nil {
35                       do {
36                           // TODO: 将头像的data传入服务器
37                           // 本地也保留一份data数据
38                           try NSFileManager.defaultManager().createDirectoryAtPath(theme.cachesPath, withIntermediateDirectories: true, attributes: nil)
39                       } catch _ {
40                       }
41                       NSFileManager.defaultManager().createFileAtPath(SD_UserIconData_Path, contents: data, attributes: nil)
42
43                       iconView!.iconButton.setImage(UIImage(data: NSData(contentsOfFile: SD_UserIconData_Path)!)!.imageClipOvalImage(), forState: .Normal)
44
45                   } else {
46                       SVProgressHUD.showErrorWithStatus("照片保存失败", maskType: SVProgressHUDMaskType.Black)
47                   }
48               }
49           }
50       } else {
51           SVProgressHUD.showErrorWithStatus("图片无法获取", maskType: SVProgressHUDMaskType.Black)
52       }
53
54       picker.dismissViewControllerAnimated(true, completion: nil)
55   }
56
57   func imagePickerControllerDidCancel(picker: UIImagePickerController) {
58       pickVC.dismissViewControllerAnimated(true, completion: nil)
59   }
60 }
61  

二:摇一摇功能的实现

 1 override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) {
 2       tableView!.hidden = true
 3       let animateDuration: NSTimeInterval = 0.3
 4       let offsetY: CGFloat = 50
 5
 6       UIView.animateWithDuration(animateDuration, animations: { () -> Void in
 7           self.yaoImageView1.transform = CGAffineTransformMakeTranslation(0, -offsetY)
 8           self.yaoImageView2.transform = CGAffineTransformMakeTranslation(0, offsetY)
 9
10           }) { (finish) -> Void in
11               let popTime = dispatch_time(DISPATCH_TIME_NOW,Int64(0.5 * Double(NSEC_PER_SEC)))
12               dispatch_after(popTime, dispatch_get_main_queue(), { () -> Void in
13
14                   UIView.animateWithDuration(animateDuration, animations: { () -> Void in
15                       self.yaoImageView1.transform = CGAffineTransformIdentity
16                       self.yaoImageView2.transform = CGAffineTransformIdentity
17                       }, completion: { (finish) -> Void in
18
19                           self.loadShakeData()
20                           // 音效
21                           AudioServicesPlayAlertSound(self.soundID!)
22                   })
23               })
24       }
时间: 2024-08-02 02:49:20

iOS开发——项目实战Swift篇&swift 2.0项目开发总结二(开发常用)的相关文章

iOS开发——完整项目实战OC篇&百思不得姐第四天

iOS开发——完整项目实战OC篇&百思不得姐第四天 上午 一:自定义按钮使用九宫格布局 二:控件不能点击 三:获取用户点击了那个按钮 四:调整按钮内部控件的位置:主流->上下 五:不能直接使用self.navigationController中或者View中获取导航控制器 方法一: 方法二: 六:布局取整 1 // 总行数 2 3 // NSUInteger rows = sqaures.count / maxCols; 4 5 // if (sqaures.count % maxCols)

mxgraph进阶(三)Web绘图——mxGraph项目实战(精华篇)

Web绘图--mxGraph项目实战(精华篇) 声明     本文部分内容所属论文现已发表,请慎重对待. 需求 由于小论文实验需求,需要实现根据用户日志提取出行为序列,然后根据行为序列生成有向图的形式,并且连接相邻动作的弧上标有执行此次相邻动作的频次,每个动作另附有一个数据集,这样有向图加数据集就构成了用户交互图.为此,自己想到了mxGraph,遂决定学习之. 起步 此次项目实战是受阅读参考文献[1]启发,并在其图形布局实例基础上进行.其原始界面如图1所示,自己要实现的界面布局与之颇有几分神似.

Net Core 项目实战之权限管理系统(0)

0 前言 Net Core 项目实战之权限管理系统(0) 无中生有 0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以开发一个普通的权限管理系统的方式来从零体验和学习Asp.net Core.项目的整体规划大致如下: 技术路线 Asp.net Core Mvc EntityFrameworkCore Bootstrap AdminLTE PostgreSQL 实现功能 组织机构管理 角色管理 用户管理 功能管理 权限管

Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

原文:Android项目实战(十七):QQ空间实现(二)-- 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图. 分析: 1.点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2.当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3.当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按钮对应的操作 显然,这个功能我们需要用PopupWindow实现更好~ --------------------

iOS开发——项目实战Swift篇&swift 2.0项目开发总结一(开发常用)

swift 2.0项目开发总结一(开发常用) 一:新特性(版本判断)的实现 1 let versionStr = "CFBundleShortVersionString" 2 let cureentVersion = NSBundle.mainBundle().infoDictionary![versionStr] as! String 3 let oldVersion = (NSUserDefaults.standardUserDefaults().objectForKey(vers

iOS开发——Swift篇&Swift关键字详细介绍

Swift关键字详细介绍 每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension, func, import, init, let, protocol, static, struct, subscript, typealias, var.” 用于子句的: “ break, case, continue, default, do, else, fallthrough, if, i

iOS开发——完整项目实战OC篇&百思不得姐第二天

百思不得姐第二天 上午 一调用父类先后顺序问题 二:手势滑动 解决问题 1 // 什么时候调用:每次触发手势之前都会询问下代理,是否触发. 2 // 作用:拦截手势触发 3 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 4 { 5 // 注意:只有非根控制器才有滑动返回功能,根控制器没有. 6 // 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器 7 if (s

人脸识别完整项目实战(2):完整项目案例运行演示

一.前言 本文是<人脸识别完整项目实战>系列博文第1部分,第一节<完整项目运行演示>,本章内容系统介绍:人脸系统核心功能的运行演示. 本内容已经录制成视频课程,详见网易云课堂. 整个<人脸识别完整项目实战>系统架构结构如下图所示: 项目概述篇:系统介绍人脸识别项目的系统架构设计.项目关键技术说明.项目业务需求分析.项目业务流程设计: 环境部署篇:提供C++和Python两种编程语言的版本,系统介绍项目开发环境概述.DLib框架源码编译.项目工程文件创建.项目开发环境配置

商城项目实战 | 2.2 Android 仿京东商城——自定义 Toolbar (二)

本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 上一篇文章<商城项目实战 | 2.1 Android 仿京东商城--自定义 Toolbar (一)>中已经对 Toolbar 的一些基本属性以及简单使用做了介绍了,这篇文章就开始介绍如何定义属于自己的 Style 的 Toolbar 了. 自定义 Theme 修改 application 的 style -- AppTheme,自己设置 Toolbar 的背景色以及