自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iOS鸽子的技术博客

集古今iOS之精华,致力于打造最接地气的博客文章

  • 博客(97)
  • 问答 (1)
  • 收藏
  • 关注

原创 iOS CoreAnimation 核心动画系列博客索引

学了这些文章能做什么,了解核心动画各个类能做什么,产品有些简单的视图平移、旋转、折叠、抖动的需求,都能搞了我们写博客的目的是学习研究之后做记录,捎带让别人指教,就是这么简单博客文章都是对同一个领域的技术,做的研究,文章与文章之间有很多相似的地方才正常一 iOS之 CALayer的基本介绍二 iOS之 CALayer与UIView的分别及新建图层三 iOS之 CALayer的隐式动画四 iOS之 图层的定位点和锚点五 iOS之 Core Animation(核心动画)六 iOS之 CABasi

2020-12-18 17:56:12 165 1

原创 iOS Quartz2D 图形绘制系列博客索引

学了这些文章你能做什么,平时的开发中产品让你做个圈圈、方块、加个水印、搞个画板,都能行一 iOS之 基本图形绘制二 iOS之 模仿下载进度一画圆圈三 iOS之 画饼图四 iOS之 画柱状图五 iOS之 绘制文字和图片六 iOS之 定时器(飘雪花效果)七 iOS之 矩阵操作(图形 上下文的平移、缩放、旋转)八 iOS之 图片加水印九 iOS之 图片剪裁十 iOS之 截屏十一 iOS之 图片截取十二 iOS之 图片擦除十三 iOS之 手势解锁十四 iOS 之画板十五 iOS 之酷

2020-12-18 17:17:05 103 1

原创 Swift5.0 系列博客索引

友情提示:Swift5.0 系列博客文章,我使用Commend Line Tool 创建的工程,每一篇代码都可以放在单独的一个swift文件里,以增强阅读性,不会报错,该注释的我都注释掉了,便于学习-Swift5.0 系列博客索引一 Swift 5.0之 常量与变量二 Swift 5.0之 基本数据类型四 Swift 5.0之 Bool类型五 Swift 5.0之 元祖六 Swift5.0之 可选值七 Swift5.0之 字符和字符串八 Swift5.0之 字符串常用方法九 Swift

2020-12-18 16:32:10 197 1

原创 iOS之 深究extern,static的用法和作用

extern首先看代码示例:GDGPerson.m 文件#import "GDGPerson.h"@implementation GDGPerson int age = 10;@endmain.m文件 ,不用包含GDGPerson类的头文件#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {

2016-07-22 13:18:25 6420 1

原创 SDWebImage执行原理

入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo:。先从内存图片缓存查找是否有图片.

2022-05-20 10:38:41 141

原创 KVO原理

文章目录简介API和属性底层原理简介主角:KVO全称:KeyValueObserving所属:通知机制形式:一对一作用:允许A对象监听B对象的某个属性的改变使用要求:继承自NSObject的对象API和属性监听方法/// 监听方法/// @param observer 监听对象/// @param keyPath 被监听对象的属性/// @param options 选项/// @param context 其他信息- (void)addObserver:(NSObje

2020-12-23 17:54:53 117

原创 Xcode12 The linked... one or more architectures required by this target: armv7. 问题

问题升级到Xcode12后,运行Release模式后,会提示以下信息The linked library 'xxxx.a/Framework' is missing one or more architectures required by this target: armv7.或者xxx/Pods/Target Support Files/Pods-xxx/Pods-xxx-frameworks.sh: line 128: ARCHS[@]: unbound variableCommand P

2020-10-20 14:59:18 2393 2

原创 iOS开发者账号的区别

苹果开发者账号主要分为3类个人(Individual)组织(Organizations)组织类又分为2个小类:公司(Company)企业(Enterprise)教育机构(Educational Institutions)个人账号和组织者账号区别个人(Individual) :费用: 99美元一年App Store上架:是最大uuid支持数: 100协作人数: 1人(开发者自己)说明: “个人”开发者可以申请升级“公司”,可以通过拨打苹果公司客服电话(400 6701

2019-07-10 20:44:28 359

原创 十七 iOS之 QQ提示标粘性效果

示例图 各子控件层级结构分析图 实现思路:1.自定义大圆控件(UIButton)可以显示背景图片,和文字2.让大圆控件随着手指移动而移动注意不能根据形变修改大圆的位置,只能通过center,因为全程都需要用到中心点计算。3.在拖动的时候,添加一个小圆控件在原来大圆控件的位置注意这个小圆控件并不会随着手指移动而移动,因此应该添加到父控件上一开始设置中心点和尺寸和大圆控件一样。随着大圆拖动

2017-11-23 10:33:13 421

原创 十六 iOS之 倒影效果

先看效果实现思路:1.用复制图层实现,搞个UIImageView展示图片,然后复制UIImageView.2.注意:复制图层只能复制子层,但是UIImageView只有一个主层,并没有子层,因此不能直接复制UIImageView.3.正确做法:应该把UIImageView添加到一个UIView上,然后复制UIView的层,就能复制UIImageView.注意:默认A控件是B控件的子控件,那么A控件的

2017-11-22 09:59:55 509

原创 十五 iOS 之 粒子效果

费话不多说,直接看图 粒子效果图 实现思路1、先创建一个画板,自定义一个view就好,用来绘制路径2、创建路径,粒子图层,还有复制层#pragma mark - 懒加载路径-(UIBezierPath *)path{ if (_path == nil) { _path = [UIBezierPath bezierPath]; } return _pat

2017-11-16 10:13:43 682

原创 十四 iOS之 活动指示器

没错,它就是你在app加载数据时不愿意看到的那个玩意效果图 代码有注释,思路很清晰ViewController.m#import "ViewController.h"@interface ViewController ()/**要添加图层的view**/@property (weak, nonatomic) IBOutlet UIView *orangeView;@end@implemen

2017-11-15 08:47:52 586

原创 十三 iOS之 音量振动条

效果图怎么实现一种方案是,创建5个layer,按顺序播放y轴动画 第二种方案是,利用复制图层来实现利用CAReplicatorLayer 实现1、什么是CAReplicatorLayer?一种可以复制自己子层的layer,并且复制出来的layer和原生子层有同样的属性,位置,形变,动画。2、CAReplicatorLayer属性instanceCount: 子层总数(包括原生子层)instan

2017-11-13 10:20:48 839

原创 十二 iOS之 折叠图片

这次开始,做一些好玩的效果看一下折叠图片的效果 制作思路1.如何制作图片折叠效果?把上面的狗子图片分成两部分显示,上面一部分,下面一部分,折叠上面部分的内容。2.如何把一张图片分成两部分显示。搞两个控件,一个显示上半部分,一个显示下半部分,需要用到Layer(图层)的一个属性contentsRect,这个属性是可以控制图片显示的尺寸,可以让图片只显示上部分或者下部分,注意:取值范围是0~1.C

2017-11-10 17:54:28 878

原创 十一 iOS 之 转盘

CADisplayLink之前我在我的博客图形绘制系列第六篇中介绍过定时器CADisplayLink的使用,它是属于CoreAnimation中的一个类,这个定时器可以使屏幕每秒大约刷新60次这次主要使用CADisplayLink,结合其它动画类做一个转盘的小功能,有兴趣研究的朋友可以下载demo,我写好了详细注释效果图 核心代码 WheelView.m#import "WheelView

2017-11-09 11:32:23 414

原创 十 iOS 之UIVIew动画 和 核心动画的区别

UIVIew动画 和 核心动画的区别先看一个动画效果这是一个很简单的动画,我让这个红色的view从(153,139)的位置平移到(200,400)的位置用核心动画ViewController.m#import "ViewController.h"@interface ViewController ()<CAAnimationDelegate>@property (weak, nonatom

2017-11-08 12:44:19 1201

原创 九 iOS 之CAAnimationGroup(动画组)

CAAnimationGroup动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行属性说明:animations:用来保存一组动画对象的NSArray默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间示例演示点击屏幕同时平移、缩放、旋转 核心代码 V

2017-11-07 18:42:33 2829

原创 八 iOS之 CATransition (转场动画)

CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。动画转场类型 类型字符串 效果说明 关键字 方向 fade 交叉淡化过渡 YES push 新视图把旧视图推出去 YES moveIn 新视图移到旧视图上面 YES reveal 将旧视图移开,显示下面的新视图

2017-11-01 11:50:11 523

原创 七 iOS之 CAKeyFrameAnimation

CAKeyFrameAnimation,关键帧动画也是CAPropertyAnimation的子类,与CABasicAnimation的区别是: CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值属性说明:values:上述的NSArray对象。里面的元素称为“关键

2017-10-30 14:48:02 379

原创 六 iOS之 CABasicAnimation

说说可以创建对象的类 CABasicAnimation,基本动画,是CAPropertyAnimation的子类属性说明fromValue:keyPath相应属性的初始值toValue:keyPath相应属性的结束值动画过程说明随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValuekeyPath内容是CALayer的可动

2017-10-26 11:17:22 286

原创 五 iOS之 Core Animation(核心动画)

核心动画继承结构开发步骤1.首先得有CALayer2.初始化一个CAAnimation对象,并设置一些动画相关属性3.通过调用CALayer的addAnimation:forKey:方法,增加CAAnimation对象到CALayer中,这样就能开始执行动画了4.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画CAAnimation 简介是所有

2017-10-17 15:27:29 293

原创 四 iOS之图层的定位点和锚点

position和archorPointCALayer有两个重要的属性:position和archorPoint@property CGPoint position; 用来设置CALayer在父层中的位置以父层的左上角为原点(0,0)@property CGPoint archorPoint; 称为“锚点”决定着CALayer身上的哪个点会在position属性所指的位置以自己的左上

2017-10-09 17:34:24 924

原创 三 iOS之 CALayer的隐式动画

隐式动画什么是图层的隐式动画? 当我们修改CALayer的一些属性,我们可以发现它会有类似动画效果一样的变化,这是图层独有的特性。这样的特性UIView是没有的,当修改UIView的图层属性,会是很生硬的变化,达不到动画的效果。示例演示示例图 核心代码 ViewController.m#import "ViewController.h"//转换角度#define angle2radi

2017-10-01 21:12:27 334

原创 二 iOS之 CALayer与UIView的分别及新建图层

新建图层先看看怎么创建图层,以及创建的图层的效果示例图片一 红色layer 示例图片二 添加图片后 代码 ViewController.m#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDi

2017-09-29 10:40:14 328

原创 一 iOS之 CALayer的基本介绍

我们知道,在iOS中,按钮、文本框、文本标签、文本输入框、图标,这些控件都继承自UIView类,这些控件之所以能显示出来,都是依托于它们内部的一个图层,也就是UIView的图层,这个图层就是CALyer的的对象UIView里的图层属性 @property(nonatomic,readonly,strong) CALayer *layer;通过操作CALyer对象,

2017-09-28 16:10:04 407

原创 十六 iOS之 酷炫弹幕(二)

这次基于上一次的demo做更复杂点的功能,原理是 通过加载我自己准备的plist文件里的数据,生成一张张图文混排的图片,让它们从屏幕上飘过,就达到了弹幕效果效果图:每次点击屏幕就飘出一条弹幕一 主要添加了一个plist文件,和一个模型类 DGDanMuModelDGDanMuModel.h#import <UIKit/UIKit.h>//弹幕类型枚举, 0就是其他人,1就是自己typedef

2017-09-12 15:52:38 442

原创 十五 iOS之 酷炫弹幕

介绍下弹幕的制作,原理是利用定时器驱动不断重绘达到滚动弹幕的效果。这次的demo比较简单,之后还会更新博文,介绍更复杂更完善的demo,请持续关注。示例图 主要功能:点击屏幕就会从右侧飘出一条弹幕(目前是一张图片)我用的storyboard,先拖入一个UIImageView,设置一张图片,这个就是背景了。然后再拖入一个UIView,设置为透明色,尺寸和UIImageView相等,盖在UIImage

2017-09-04 15:53:28 585

原创 十四 iOS之 画板

这次介绍一个比较复杂一些的小demo,一个简洁的画板,主要知识点是利用贝塞尔曲线–UIBezierPath这个类去实现手动画线的操作,这个操作在很多app中电子签名这个功能中都曾用到。 先看看示例图,这个小画板有哪些工能1、基本的画线,可以写字,你可以滑动滑块控制画线的粗细,点击最下方颜色按钮改变画线的颜色 2、点击“撤销”,可以清除你上一步的操作,不断点击,可以不断撤销。如果点击“清屏”,就会清

2017-08-31 11:25:50 600

原创 十三 iOS之 手势解锁

现在好多app都有手势解锁的功能,这个功能要连线,所以和绘制是脱不开关系的,来看看怎么做示例图一 示例图二 创建一个UIView–BackView,用来绘制深黑色背景图BackView.m#import "BackView.h"@implementation BackView- (void)drawRect:(CGRect)rect { //绘制一个背景图 UIImage *

2017-08-30 14:51:52 506

原创 十二 iOS之 图片擦除

如下图,大家可能玩过一些类似这样小游戏,这个人的外边的衣服可以擦掉,这就用到了绘图中图片擦除的技术,还有一些刮奖的功能,也是用到了这个技术,下面看看怎么实现的完整图片擦掉一部分的图片 以我这个项目为例,在项目中创建两个imageView,两个imageView要重合,分别导入一张图片,带完整图片的imageView要盖在另一个imageView上方要擦除的就是那张完整的图片,然后把新生成的图片显示

2017-08-24 17:09:48 2412

原创 十一 iOS 图片截取

简单介绍截取图片完整图片截取后的图片 首先创建一个UIImageView,导入图片然后ViewController.m#import "ViewController.h"@interface ViewController ()@property(nonatomic,assign)CGPoint startP;/**截取的view*/@property(nonatomic,weak)UIView

2017-08-22 11:13:39 243

原创 十 iOS之 截屏

有的app中会需要有一个截屏的小功能,下面看看代码怎么写给UIImage添加一个类目,写一个截屏的方法/** 控件截屏 @param view 传入的View @return 截屏图片 */+ (UIImage *)imageWithCaputureView:(UIView *)view{ // 开启位图上下文 UIGraphicsBeginImageContextWith

2017-08-09 16:00:18 393

原创 九 iOS之 图片剪裁

介绍图片剪裁,以剪裁圆形为例普通剪裁带圆环的图片拖入一个UIImageView,取名“imageView”到view中裁剪出一个普通圆形图片//0 加载图片 UIImage * image = [UIImage imageNamed:@"阿狸"]; //1 开启位图上下文,跟图片尺寸一样大 UIGraphicsBeginImageContextWithOptions(im

2017-08-03 10:47:01 301

原创 八 iOS之 图片加水印

在一些app中常见到加水印的图片,为了防止别人盗图,下面看看怎么加上去的水印如下图,在图片上绘制文字 新增一个UIImageView– “imageVCustom”ViewController.m#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageV

2017-08-01 16:04:19 446

原创 七 iOS之 矩阵操作(图形上下文的平移、缩放、旋转)

图形上下文的位置、角度等也是可以变化的创建一个UIView,“customView”customView.m#import "customView.h"@implementation customView- (void)drawRect:(CGRect)rect { // Drawing code //1、获取上下文 CGContextRef ctx = UIGraphic

2017-07-31 10:57:28 380

原创 六 iOS之 定时器(飘雪花效果)

简单介绍一下定时器CADisplayLink的使用,做一个飘雪花的效果创建一个UIView “XueHua”XueHua.m#import "XueHua.h"static CGFloat _snowY = 0;@implementation XueHua-(void)awakeFromNib{ [super awakeFromNib]; //CADisplayLink :调度

2017-07-25 11:44:23 353

原创 五 iOS之 绘制文字和图片

介绍下绘制文字、绘制图片以及裁剪图片文字图片平铺的图片裁剪的图片图片的绘制新建一个UIView,对应代码写在drawRect:方法中- (void)drawRect:(CGRect)rect { //超出裁剪区的内容会全部裁剪掉 //注意:裁剪必须放在绘制之前(这行代码注释掉就不会裁剪了)// UIRectClip(CGRectMake(20, 20, 100, 100));

2017-07-24 16:23:31 1790

原创 四 iOS之 画柱状图

绘制一个随机柱状图,点击图片可以变换新建一个UIView — BarViewBarView.m#import "BarView.h"@implementation BarView- (void)drawRect:(CGRect)rect { NSArray * arr = [self arrRandom]; CGFloat x = 0; CGFloat y = 0; C

2017-07-17 11:43:12 531

原创 三 iOS之 画饼图

这次绘制一个可随机变换的饼图新建一个UIView — PieView在 PieView.m 写入//做一个随机数组-(NSArray*)arrRandom{ //数组中所有数的总和为100 int totoal = 100; NSMutableArray * arrM = [NSMutableArray array]; int temp = 0; //设置循环

2017-07-08 11:50:53 420

原创 二 iOS之 模仿下载进度—画圆圈

效果图先在storyboard上拖入一个view,一个label,一个滑块新添加一个UIView - ProgressView, 在.h文件中写入属性//滑块的进度 @property(nonatomic,assign)CGFloat progress;在.m文件中//set方法,重新赋值-(void)setProgress:(CGFloat)progress{ _progress =

2017-07-05 17:27:44 386

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除