- 博客(27)
- 资源 (21)
- 收藏
- 关注
原创 iOS应用间相互跳转
在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景。这就需要我们掌握iOS应用程序之间的相互跳转知识。下面来看看我们在开发过程中遇到的应用场景。1.应用间相互跳转应用场景使用第三方用户登录,跳转到需授权的App。如QQ登录,微信登录等。需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名、密码"。应用程序推广,跳
2016-11-29 13:38:46 1127
转载 ios中的SQL数据库文件加密 (使用sqlcipher)
今天本想写一片 GAE+goAgent+SwitchySharp 的指南的!但是突然翻出了前段时间写的关于ios中的SQL数据库文件加密的代码,于是乎决定今天就先讲讲这个!~ 那么goAgent将放在周末, 后续的文章中除了文件加密,还有传输数据加密,感兴趣的童鞋 敬请留意。言归正传,sql的文件加密,我们首先要用到一个库,它就是大名鼎鼎的Sqlcipher, 奉上连接:http://
2016-11-29 09:56:35 800
转载 如何实现一个不规则排列的图片布局算法
一直在500px上看照片,发照片。以前看它的首页图片展示就只是觉得好看,洋气,也没想过自己在iOS上实现一下。昨天不知怎么的就开始想其中的算法了,现在我把思考的过程在这里贴出来分享一下,如果你有更好的算法欢迎探讨。最终我做出的效果是这样的:垂直滚动水平滚动算法总体思路先说一下总体上的思路。既然图片的大小、位置各不一样,我们
2016-11-29 09:52:27 6523
转载 用二次函数实现平滑的手势驱动动画
写这篇文章的动机来源于最近做的个动画,如上。其中我一开始在处理pan-to-dismiss的图片形变时候遇到了点问题。首先,这个动画的思路是,以panGesture的transition.y为变量,去实时改变视图的CATransform3D属性。具体的,我们需要同时改变CATransform3DRotate和CATransform3DScale,这样才能在实现绕X轴转动的同时一起做缩放变换
2016-11-29 09:51:10 534
转载 CADisplayLink结合UIBezierPath的神奇妙用
做过iOS动画的朋友都知道,动画中一大头疼之处就是弹性、形变之类扭曲的效果。iOS7开始,我们开始可以直接使用UiView的渲染动画API实现简单的弹性效果。+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampin
2016-11-29 09:49:07 490
转载 iOS10全新推送功能的实现
从iOS8.0开始推送功能的实现在不断改变,功能也在不断增加,iOS10又出来了一个推送插件的开发(见最后图),废话不多说直接上代码:在开始之前需要打开一个推送开关,不然无法获取deviceToken,老项目或者出现deviceToken无效的情况:如图:打开后会生成entitlements文件,需要有APS Environment或许还
2016-11-29 09:47:42 1591
转载 iOS开发UI篇—Quartz2D使用(绘图路径)
一、绘图路径A.简单说明在画线的时候,方法的内部默认创建一个path。它把路径都放到了path里面去。1.创建路径 cgmutablepathref 调用该方法相当于创建了一个路径,这个路径用来保存绘图信息。2.把绘图信息添加到路径里边。以前的方法是点的位置添加到ctx(图形上下文信息)中,ctx 默认会在内部创建一个path用来保存绘图信息。在图形上
2016-11-24 14:39:10 345
转载 初识CoreText
一、基本知识介绍1.字符(Character)和字形(Glyphs)排版系统中文本显示的一个重要的过程就是字符到字形的转换,字符是信息本身的元素,而字形是字符的图形表征,字符还会有其它表征比如发音。 字符在计算机中其实就是一个编码,某个字符集中的编码,比如Unicode字符集,就囊括了大都数存在的字符。 而字形则是图形,一般都存储在字体文件中,字形也有它的编码,也就是它在字体中的索
2016-11-24 11:55:46 608
转载 CorAnimation7-高效绘图、图像IO以及图层性能
高效绘图软件绘图术语绘图通常在Core Animation的上下文中指代软件绘图(意即:不由GPU协助的绘图)。在iOS中,软件绘图通常是由Core Graphics框架完成来完成。但是,在一些必要的情况下,相比Core Animation和OpenGL,Core Graphics要慢了不少。软件绘图不仅效率低,还会消耗可观的内存。CALayer只需要一些与自己相关的内存:
2016-11-24 11:54:26 755
转载 CoreAnimation6-基于定时器的动画和性能调优
基于定时器的动画定时帧动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点。一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只是看起来像是做了运动。我们之前提到过iOS按照每秒60次刷新屏幕,然后CAAnimation计算出需要展示的新的帧,然后在每次屏幕更新的时候同步绘制上去,CAAnimation
2016-11-24 11:53:24 1266
转载 CoreAnimation5-图层时间和缓冲
图层时间动画的发生是需要持续一段时间的,所以计时对整个概念来说至关重要。在这一章中,我们来看看CAMediaTiming,看看Core Animation是如何跟踪时间的。CAMediaTiming协议 CAMediaTiming协议定义了在一段动画内用来控制逝去时间的属性的集合,CALayer和CAAnimation都实现了这个协议,所以时间可以被任意基于一个图层
2016-11-24 11:52:19 488
转载 CoreAnimation4-隐式动画和显式动画
事务Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画。动画并不需要你在Core Animation中手动打开,相反需要明确地关闭,否则他会一直存在。当你改变CALayer的一个可做动画的属性,它并不能立刻在屏幕上体现出来。相反,它是从先前的值平滑过渡到新的值。这一切都是默认的行为,你不需要做额外的操作。这看起来这太棒了,似乎不太真实,我们
2016-11-24 11:51:14 1090
转载 CoreAnimation3-专用图层
CAShapeLayerCAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类。你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形,最后CAShapeLayer就自动渲染出来了。当然,你也可以用Core Graphics直接向原始的CALyer的内容中绘制一个路径,相比直下,使用CAShapeLayer有以下一些优点:渲染快速。CAShapeL
2016-11-24 11:49:22 456
转载 CoreAnimation2-视觉效果和变换
圆角圆角矩形是iOS的一个标志性审美特性。这在iOS的每一个地方都得到了体现,不论是主屏幕图标,还是警告弹框,甚至是文本框。按照这流行程度,你可能会认为一定有不借助Photoshop就能轻易创建圆角举行的方法。恭喜你,猜对了。CALayer有一个叫做conrnerRadius的属性控制着图层角的曲率。它是一个浮点数,默认为0(为0的时候就是直角),但是你可以把它设置成任意值。默认情
2016-11-24 11:48:32 709
转载 CoreAnimation1-图层树、寄宿图以及图层几何学
(一)图层的树状结构Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来,所以做动画这只是Core Animation特性的冰山一角。Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层
2016-11-24 11:47:29 675
转载 Quartz-2D绘图之路径(Paths)详解
在上篇文章中,我们简单的理解了绘图上下文,今天我们来认识一下Quartz-2D中另一个重要的概念,路径(Paths)。一、理解路径 路径定义了一个或多个形状,或是子路径。一个子路径可由直线,曲线,或者同时由两者构成。它可以是开放的,也可以是闭合的。一个子路径可以是简单的形状,如线、圆、矩形、星形;也可以是复杂的形状,如山脉的轮廓或者是涂鸦。图3-1显示了一些我们可以创建的路径。左
2016-11-24 11:43:53 1038
转载 Quartz-2D绘图之图形上下文详解
这篇文章就先讲讲图形上下文(Graphics Context)的具体操作。 所谓Graphics Context,其实就是表示了一个绘制目标,也就是你打算绘制的地方,它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息。Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等。然而,我们怎样才能获得或者创建一个Graphics C
2016-11-24 11:43:14 596
转载 优化 App 的启动时间
这是一篇 WWDC 2016 Session 406 的学习笔记,从原理到实践讲述了如何优化 App 的启动时间。App 运行理论main() 执行前发生的事Mach-O 格式虚拟内存基础Mach-O 二进制的加载理论速成Mach-O 术语Mach-O 是针对不同运行时可执行文件的文件类型。 文件类型:Executable: 应用的主要二进制Dylib: 动
2016-11-14 15:04:38 739
原创 对定时器与滚动视图冲突处理
直接上代码。//// ViewController.m// TestRunLoop//// Created by 赵诣 on 2016/11/11.// Copyright © 2016年赵诣. All rights reserved.//#import "ViewController.h"#imp
2016-11-11 16:24:00 977
转载 NSRunLoop的一点理解
一、类定义 + (NSRunLoop *)currentRunLoop 如果调用的线程中没有runloop,那么将会创建一个并返回 + (NSRunLoop *)mainRunLoop 返回主线程的runloop - (void)acceptInputForMode:(NSString *)mode beforeDate:(NSDate *)lim
2016-11-11 16:21:01 261
原创 iOS面向切面编程-AOP
1. AOP简介AOP: Aspect Oriented Programming 面向切面编程。 面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 AOP是OOP的延续,是(Aspe
2016-11-11 09:51:08 4185 1
原创 cocoapods简单创建流程
1 touch Podfile2 open Podfile3 platform :ios, '7.0'target 'XXX' dopod 'AFNetworking', '~> 3.1.0'end4.pod install pod install --no-repo-update 更新
2016-11-10 14:51:48 251
转载 避免在类别(category)中定义属性(@property)
property 是包装数据的一种办法.尽管技术上可以实现在category里面声明一个property,但是应该尽量避免这样做.理由是,除了class延续类别外,是不可能用一个category对class添加一个实例变量. 因此对于category同样也不可能合成一个实例变量去支持property. 我们来切割下本来是实现person的class.你可能需要一个关于友谊的category声明方法
2016-11-09 16:39:58 1417
转载 iOS Runtime原理及使用
runtime简介因为Objc是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时。也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这就是 Objective-C Runtime 系统存在的意义,它是整个Objc运行框架的一块基石。RunTime简称运行时。OC就是运行时机制,其中最主要的是消息机制。对于C语言
2016-11-07 14:30:39 504
原创 iOS10项目打包上传被拒关于隐私权限问题
今天项目打包提交。收到了苹果的邮件。主要内容:This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string va
2016-11-07 11:51:24 14961
原创 CocoaPods最新更新
由于众所周知的原因,国内并不能访问到官方的 Ruby 源,所以大部分朋友可能都是使用的国内的镜像源。而这里面,使用的最多的,可能就是淘宝提供的镜像源了。不过最近淘宝的镜像源 ruby.taobao.org 停止更新了,所以使用 CocoaPods 的同学,请更新到 ruby china 的源。详细的内容,请参见:https://ruby-china.org/topics/29250。另一方面
2016-11-04 15:21:15 576
转载 谓词(NSPredicate)
OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据。非常方便。在Java中是没有这种技术的,但是有开源的框架已经实现了此功能。下面来看一下具体的例子吧:Person.h[objc]
2016-11-03 15:19:07 336
iOS.OC各种加密方法
2016-07-18
网络请求省市区选择器
2016-04-12
iOS自定义AlertView
2016-02-01
iOS贝塞尔曲线制作动画进度条,一次二次曲线
2016-02-01
iOS折线图标进度条制作
2016-02-01
iOS瀑布流及各种UICollectionView样式
2016-01-27
自定义选择器弹出背景变暗
2016-01-27
自定义UIAlertController+省市区
2016-01-27
iOS省市区选择器UIPickerView
2016-01-27
UILabel改变任意位置字体大小颜色
2016-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人