My First

如有问题请留言「Stay hungry. Stay foolish.」


  • 首页

  • 归档

  • 标签

  • 搜索

图片压缩

发表于 2016-05-02 |

可以将如下两个方法写在分类中,方便不同项目的重复使用

1
2
3
4
5
6
//压缩图片质量
+ (UIImage*)reduceImage:(UIImage*)image percent:(float)percent {
NSData* imageData = UIImageJPEGRepresentation(image, percent);
UIImage* newImage = [UIImage imageWithData:imageData];
return newImage;
}
阅读全文 »

获取storyboard箭头指向的根控制器

发表于 2016-05-02 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 通过名称获取storyboard箭头指向的根控制器
*
* @param sbName storyboard名字
*
* @return storyboard instantiateInitialViewController
*/
- (id)viewControllerWithSBName:(NSString*)sbName {
//获取程序的名字
NSDictionary* info = [[NSBundle mainBundle] infoDictionary];
NSString* prodName = [info objectForKey:@"CFBundleExecutable"];
NSString* sbPath = [NSString stringWithFormat:@"%@/%@/", prodName, sbName];
// NSLog(@"%@", [[UIStoryboard
// storyboardWithName:sbName
// bundle:[[NSBundle alloc]
// initWithPath:sbPath]]
// instantiateInitialViewController]);
return
[[UIStoryboard storyboardWithName:sbName
bundle:[[NSBundle alloc] initWithPath:sbPath]]
instantiateInitialViewController];
}

SSH公钥

发表于 2016-05-02 |
SSH ( Secure Shell)是一种安全协议,在你的电脑与 GitHub 服务器进行通信时,我们使用 SSH 密钥(SSH Keys)认证的方式来保证通信安全。

SSH 密钥的创建需要在终端(命令行)环境下进行,我们首先进入命令行环境。通常在 Mac OS X 和 Linux 平台下我们使用终端工具(Terminal),在 Windows 平台中,可以使用 Git Bash 工具。

进入命令行环境后,我们执行以下操作来创建 SSH 密钥

阅读全文 »

博客迁移

发表于 2016-04-29 |

原来的博客地址:http://irena.gitcafe.io
现在的博客地址:http://irenachou.github.io/

第一次搭博客首选了gitcafe,是因为gitcafe访问相对快一些,github比较慢,转了一圈,最终又回到了github上来。

前两天写了一篇关于UI-Touch的小短文发现gitcafe被coding收购了,5月31号前要把所有gitcafe上的项目都迁移到coding,接着就始迁移了,在coding部署要交费了,试了几天,实在很贵,也没有找到比较好的较便宜的方法,又放弃coding向github上迁移

迁移的过程中还是遇到了一个小问题,以前在gitcafe的时候,使用的是gitcafe-pages子分支,也就想在github上直接使用这个子分支,但是将默认分支改成子分支后,访问的还是master分支,英文很烂,并且各种搜索后无解,最后只好曲线救国,先将博客指定到了master分支,有知道我问题的朋友,留言告诉我哦,谢谢了

coreImage图片滤镜处理

发表于 2016-04-29 |

参考

CoreImage 是一种图像处理和分析技术,为图片和视频图像提供近实时处理。图像数据类型从核心图形核心视频和图像的I / O框架,可使用GPU或CPU渲染路径。核心图像通过提供一个易于使用的应用程序接口(接口),隐藏低级别图形处理的细节。你不需要知道OpenGL和OpenGLES的细节,利用GPU的能力,你也不需要知道任何关于Grand Central Dispatch(GCD)得到的多核处理的效益。核心图像为你处理细节。
1
1

CIContext: 所有图像处理都是在一个CIContext 中完成的,这很像是一个Core Image处理器或是OpenGL的上下文。

CIImage: 这个类保存图像数据。它可以从UIImage、图像文件、或者是像素数据中构造出来。

CIFilter: 滤镜类包含一个字典结构,对各种滤镜定义了属于他们各自的属性。滤镜有很多种,比如鲜艳程度滤镜,色彩反转滤镜,剪裁滤镜等等。

Core Image架构

Core Image有一个插件架构,这意味着它允许用户编写自定义的滤镜并与系统提供的滤镜集成来扩展其功能。我们在这篇文章中不会用到Core Image的可扩展性;我提到它只是因为它影响到了框架的API。

包含了Core Image提供的图像滤镜的完整列表,以及用法示例。

无回路有向图

一个滤镜图表是一个链接在一起的滤镜网络(无回路有向图),使得一个滤镜的输出可以是另一个滤镜的输入。以这种方式,可以实现精心制作的效果。我们将在下面看到如何连接滤镜来创建一个复古的拍照效果。

Core Image Filter Reference包含了Core Image提供的图像滤镜的完整列表,以及用法示例。

本文中的Demo使用iOS9.3测试
Demo包含两个:
一个是单纯的基本滤镜的处理
另一个是照相,图片压缩和简单滤镜处理

Demo代码下载

阅读全文 »

UITouch-跟着手指走-判断point的范围

发表于 2016-04-22 |

响应者对象

在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为"响应者对象".

UIApplication,UIViewController,UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件.

UIResponder

UIResponder内部提供了方法来处理事件;
> 触摸事件 
一次完成的触摸过程,会经历3个状态;

UIView的触摸事件处理

1、一根或多根手指开始触摸view,系统会自动调用view下面的方法:
  • (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event; //触摸开始
  • 2、一根或者多根手指在view上移动,系统会自动调用view下面的方法(随着手指的移动,会持续调用该方法):

  • (void)touchesMoved:(NSSet )touches withEvent:(UIEvent )event; //触摸移动
    3、一根或者多根手指离开view,系统会自动调用view下面的方法:

  • (void)touchesEnded:(NSSet )touches withEvent:(UIEvent )event; //触摸结束
    4、触摸结束前,某个系统事件(例如电话呼入)会打断触摸过程,系统会自动调用view下面的方法

  • (void)touchesCancelled:(NSSet )touches withEvent:(UIEvent )event; //触摸取消(可能会经历)
    4个触摸事件的处理方法中,都有 NSSet touches 和 UIEvent event 两个参数;

    1、一次完整的触摸过程,只会产生一个事件对象,4个触摸方法都是同一个event参数;

    2、如果两根手指同时触摸一个view,那么view只会调用一次 touchesBegan:withEvent: 方法,touches参数中装着两个UITouch对象;

    3、如果这两根手指一前一后分开触摸同一个view,那么view会分别调用两次 touchesBegan:withEvent:方法, 并且每次调用时的touches参数只包含一个UITouch对象;

    4、根据touches中UITouch个数可以判断出使单点触摸还是多点触摸。

    提示:touches中存放的都是UITouch对象。

    下面提供一个简单的Demo,view跟着手指移动
    点击下载Demo

1
下面提供一个简单的Demo,view由手指拖着走,并且不能超出屏幕范围
点击下载Demo

阅读全文 »

iOS判断NSString是否为纯数字

发表于 2016-04-15 |
1
2
3
4
5
6
//判断是否为整形
- (BOOL)stringIsPureNumber:(NSString*)string {
NSScanner* scan = [NSScanner scannerWithString:string];
int val;
return [scan scanInt:&val] && [scan isAtEnd];
}
阅读全文 »

CGPoint

发表于 2016-04-12 |

CGPoint表示一个二维坐标系中的点
CGPoint通过x和y坐标定义,可使用CGPointMake(x,y)创建点。

可以将它们与字符串进行相互转换,可用如下函数:NSStringFromCGPoint()、CGPointFromString().
主要说CGPointFromString方法

下面是CGPoint的定义

1
2
3
4
5
6
/* Points. */
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

stringWithFormat从String转换为point的方法中,所需的string格式是{x,y},下面是例子

1
2
3
4
NSString *str = @"0.111, 1.22";
str = [NSString stringWithFormat:@"{%@}", str];
CGPoint initPath = CGPointFromString(str);
NSLog(@"%@", NSStringFromCGPoint(initPath));

iOS 3D Touch

发表于 2016-04-11 |

3D Touch说明

轻压和重压(Peek and Pop)
主屏幕快捷操作(Home Screen Quick Actions)

3D Touch 给 iOS 9 用户提供了一个新的交互维度。在所支持3DTouch的设备上,人们可以通过按压应用的图标去快速选择应用定制的操作。在应用内,人们可以使用多种按压操作去获取一个项目的预览,可以在独立的视图里打开一个项获取相关操作。(了解更多在你的代码中如何添加3D Touch支持,参阅 Adopting 3D Touch on iPhone .)

系统会自动安排图标在快速操作列表中的位置是在左侧或者在右侧,这依赖于你的应用的图标在用户主屏幕的位置。(摒除图标在列表中的位置,在自左向右的语言中文字总是左对齐。)这里有主屏快捷操作的多种展现方式的例子。

使用主屏幕快捷操作去开启引人注目的、高价值的任务。例如,Maps可以让用户不需要打开Maps,通过在当前位置附近搜索就可以获得回家的方向。一个应用至少需要把一个有用的任务放在主屏幕快捷操作里;你可以提供最多四个快捷操作

1
使用3D Touch必须要有6s或6s plus

3D Touch的三大模块

home screen quick aactions

  1. 静态菜单[不需要写代码,在info.plist中配制]
  2. 动态菜单[代码实现]
  3. 菜单跳转

peek and pop

  1. 轻度按压预览页面-peek
  2. 大力按压跳转页面-pop
  3. peek过程中的自定义操作

force propertiesp

阅读全文 »

制作/使用.a文件

发表于 2016-04-11 |

制作步骤:

  1. File–New–Project
    按照如下图创建项目
    操作
  2. 按照下图创完成所需类的定义和实现
    操作
  3. 创建后Command + B 进行编辑,如果device选择的是真机,生成的.a文件就适合真机的
    想要创建适用于模拟器的.a文件,将device改成模拟器就可以
  4. 如果没有生成所需头文件,按下图逐步操作添加
    操作
    操作
  5. 按下图查看制作好的.a文件
    2
阅读全文 »
1…8910…12
Irena

Irena

第一个清晨

111 日志
9 标签
Github Weibo
Links
  • 菜天雨
© 2018 Irena
由 Hexo 强力驱动
主题 - NexT.Pisces