首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 自定义相机页面

这时候我们需要自定义一个相机页,自定义有两种方式: 1、如果你需求的页面没有那么复杂,可以继承UIImagePickerController对其拍摄页面进行重绘。...2、如果是较复杂的拍摄页,则需要完全自定义相机页。关于这个可以参考类似这篇博客 我们今天先来说说第一种。也就是类似我文章头部的这种界面怎么画出来。额~这时候还是给心急的上个Demo吧。...在文中,顺便说下我碰到的两个问题:拍摄页灰色透明遮罩绘制 和拍摄后黑屏问题 代码Demo都有了,我这里只说下流程。 首先写个继承UIImagePickerController的自定义类。...frame]) { self.backgroundColor = [UIColor clearColor]; //遮罩View self.mView = [[UIView...addSubview:self.mView]; 然后绘制一个矩形透明区Layer加进去 - (void)drawRect:(CGRect)rect { //绘制一个遮罩 //贝塞尔曲线 画一个带有圆角的矩形

2.5K10

iOS学习——Quartz2D学习(1)

他是一个二维的绘图引擎,同时支持iOS和Mac系统 2、Quartz2D能完成的工作   画基本线条,绘制文字,图片,截图,自定义UIView. 3、Quartz2D在开发中的价值   当我们的控件样式极其复杂时...,可以把控件内部的结构给画出画,就是自定义控件. 4、什么是图形上下文 图形上下文是用来保存用户绘制的内容状态,并决定绘制到哪个地方的....Graphics Context(图层上下文,自定义UIView取得上下文就是图层上下文....UIView之所以能够显示就是因为他内部有一个图层) Printer Graphics Context 6.如何自定义UIView,步骤是什么? ...相关联.才能将内容绘制到View上面.在DrawRect方法方法里 步骤: 1.要先自定定UIView 2.实现DrawRect方法 3.在DrawRect方法中取得跟View相关联的上下文

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    绘图-CAShapeLayer、CABasicAnimation以及核心动画

    layer.png CALayer就是QeartzCore框架中的一个类,CALayer是个与UIView很类似的概念,同样有backgroundColor、frame等相似的属性,我们可以将UIView...但实际上UIView是对CALayer封装,在CALayer的基础上再添加交互功能。UIView的显示必须依赖于CALayer。...layer.png CALayer 最常用的两个子类: CAGradientLayer(用于颜色渐变的实现) // 创建 UIView 用来承载渐变色 UIView *myView = [[UIView...#比如末端是矩形还是圆形,都是 UIBezierPath的设置,而且fillColor 也是 UIBezierPath区域内的颜色。...关于核心动画里面的时间暂停,继续的问题可以看我另一篇文章:实践-跑马灯效果及实现过程解析 CASpringAnimation 带有初始速度以及阻尼指数等物理参数的属性动画。

    2.9K30

    创建简单动画(一) --- 常规hud

    比较复杂的动画则考虑是否用UIBezierpath一帧帧来画 今天我们模仿做一个场景切换加载等待动画, 比如这样的 ? 我们分析下这张图的构成 #1. 一个灰色的背景 #2. 一个白色的圆环 #3....一个闭合的圆弧(白色部分) 看起来不是简单的位移动画了, 我们用UIBezierPath加CADisplayLink一帧一帧来画试试看 灰色的背景, 这个比较简单, 我们直接创建一个UIView子类,...背景颜色设置为灰色 白色的圆环, 可以用UIBezierPath直接画一个圆,注意调整线的宽度 So easy //添加外圆 UIBezierPath *apath = [UIBezierPath..., 一样用UIBezierPath, 先设置圆心 画一个圆弧然后闭合路径, _count是设置的一个变量, 有Controller中的计时器控制以达到动画的效果 //先画内圆 //设置线条...然后在Controller中创建计时器, 改变_count的值达到动画的效果 上代码: 先创建一个UIView子类, #import @interface MyView

    61920

    使用UIBezierPath绘制图形

    当需要画图时我们一般创建一个UIView子类, 重写其中的drawRect方法 再drawRect方法中利用UIBezierPath添加画图 UIBezierPath的使用方法: (1)创建一个Bezier...(2)使用方法moveToPoint:去设置初始线段的起点。 (3)添加line或者curve去定义一个或者多个subpaths。 (4)改变UIBezierPath对象跟绘图相关的属性。...也可以设置filled path的属性usesEvenOddFillRule 我们直接上demo, 创建一个BezierView继承自UIView并重写drawRect方法 #import "BezierView.h...[path closePath]; path; }); //根据坐标连线 [apath stroke]; } 然后把自定义的...我们可以用UIBezierPath的bezierPathWithRect:CGRect(rect)方法来画矩形, 代码如下 - (void)drawRect:(CGRect)rect { //

    1.1K40

    setNeedsDisplay看我就懂!

    一、着手 我定义了一个UIView的子类,用于演示使用setNeedsDisplay,这个CircleView子类会在draw(_ rect: CGRect)方法内简单绘制一个圆,它有一个颜色属性,这是我们将要设置用来改变圆的颜色...rect: CGRect) { let path = UIBezierPath(ovalIn: rect) color.setFill() path.fill...而我们自定义了自己的UIView子类,所以我们需要处理影响显示的控件的更新。在改变颜色的情况下,当然需要我们自己控制重新绘制。...类似地,旋转设备也不会触发重新绘制圆形。这是因为视图的缓存机制,即便视图布局发生改变,也只是作为缓存。...即使视图可能被移动或者有另一个视图重叠,也可能不需要重新绘制,因此您不能仅仅依靠已经移动整个视图或添加另一个视图基于setNeedsLayout或updateIfNeeded来导致重绘 3、当编写重载drawRect的UIView

    1.3K60

    绘图-几个较复杂统计图案例的实现分析

    就包含了三段直线,把UIBezierPath 赋值给CAShapeLayer后,直接对 CAShapeLayer的strokeEnd 作CABasicAnimation动画,就会出现,三条横线依次出现的动画...,很巧妙,而不是你看到的初始化三条UIBezierPath。...小圆点的动画 根据数据源,在每一数据点处放上一个自定义UIView,在此自定义UIView的drawRect中绘制圆形图形,并且设置 shape.layer.opacity = 0;,即让这些小圆点(...很多UIView)刚开始的是不显示的,加载在当前的UIView上,计算每一个点的动画开始时间,达到小圆点依次作动画的效果。...UIBezierPath,把这个路径拼接上X坐标轴上的两个垂直投影点形成一个底部矩形状的封闭路径,把个路径作为渐变图层的path,并绘制一条比这个UIBezierPath顶部低一点的路径作为 渐变图层的遮罩图层

    1.5K20

    UIImageView圆角,教你远离cornerRadius

    10.f; 由于设置masksToBounds 会导致离屏渲染(离屏渲染:GPU在当前屏幕缓冲区外新开辟一个渲染缓冲区进行工作),这会给我们带来额外的性能损耗,如果这样的圆角操作达到一定数量,会触发缓冲区的频繁合并和上下文的的频繁切换...scale); if (nil == UIGraphicsGetCurrentContext()) { return; } UIBezierPath...*cornerPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:rectCornerType cornerRadii...延伸:如何高效的为UIView创建圆角? 做法的原理是手动画出圆角的image,在UIView上增加一层UIImageView,将image赋值给UIImageView。...当然,简单的做法是设计的美工自己做一张带有圆角效果的图片,根据大小拉伸。这样的一个好处是以防美工随意更改圆角的角度?

    2.2K40

    UI篇-UIResponder之事件传递和响应精析

    3.类似地,视图层次中的每个后续视图如果不处理事件都首先传递给它的视图控制器(如果有的话),然后是它的父视图。 4.最上层的容器视图将事件传递给UIWindow对象。...,然后在调用hitTest: withEvent:依次获取处理这个事件的所有视图对象,在获取所有的可处理事件对象后,开始调用这些对象的touches回调方法 在自定义View中重写 touchesBegan...需要注意的是:viewController.m文件中重写touchBegan:withEvent:方法,相当于处理的是viewController的触摸事件,想处理自定义View的触摸事件,必须在自定义...; 2.在pointInside中创建一个 UIBezierPath,通过 [path containsPoint: point]来判断当前的点是否在圆内,pointInside的返回值直接影响到...- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { UIBezierPath * path = [UIBezierPath

    2.5K30

    Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

    /矩形/圆和弧)、绘制文字、绘制和生成图片、读取/生成pdf、截图/裁剪图片、自定义UI控件等 3、对于界面复杂且个性化的UI,普通的UI控件无法实现,而Quartz2D技术却可以通过自定义UI控件来实现...-->需要图形上下文,保存绘图信息; 然后图形上下文必须跟view相关联,才能将内容绘制到View上面   自定义UI控件的步骤:   1)新建一个类,继承自UIView   2)实现  - (void...自定义UIView代码, 自定义View名称为:Quarz2DView Quarz2DView.h: #import @interface Quarz2DView :...会触发layoutSubviews,当然前提是frame的值设置前后发生了变化 33 4、滚动一个UIScrollView会触发layoutSubviews 34 5、旋转Screen会触发父UIView...上的layoutSubviews事件 35 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件 36 */ 37 - (void)layoutSubviews

    2.6K10

    iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)

    1. iOS动画 总的来说,从涉及类的形式来看,iOS动画有:基于UIView的仿射形变动画,基于CAAnimation及其子类的动画,基于CG的动画。这篇文章着重总结前两种动画。 2....UIView动画 设置UIView形变动画有两种常见用到的属性,.frame,.transform,所以有的人也可以分别称之为: ① frame动画 ② transform动画 这两种动画只需要在动画语法中适当的位置...,基于UIView和CALayer的属性设置变化值即可。...2.1 设置UIView动画的两种语法形式 begin --- commit //偏移动画 [UIView beginAnimations:@"move" context:nil]; [...添加动画到图层, 会自动执行 [_layer addAnimation:keyframeAnimation forKey:@"GGKeyframeAnimation"]; 类似的API /* Add

    3.4K21

    想要漂亮的蒙版指引吗?跟着我手把手的教你写出来

    最近版本的一个需求是给首页添加新人蒙版,类似的效果图如下图所示。 首页第一层蒙版的效果图 ? 首页蒙层 首页第二层的蒙版效果图 ? 首页蒙层2 个人中心的蒙版效果图 ?...当时安卓已经找到了对应的库,十分容易的做这个需求了。 我当时的第一个想法是,既然安卓有类似的库,那么 iOS应该也有类似的库。...我们创建一个继承于 UIView 的类名字叫做GBBaseMaskView类用于封装我们指引的共同点。...Alert和 Sheet弹框的方式,我们就定义类似的方法叫做 showInWindow用于展示界面。...用于防止镂空的路径 UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.bounds]; // 便利外部传入的数据源

    1.5K20

    Quartz2D复习(三) --- 涂鸦

    ,然后还要有撤销、清屏、橡皮擦的功能,那就需要画很多条路径了,然后每条路径有自己的颜色和宽度,那么 UIBezierPath类也实现不了,需要自定义一个类,继承自UIBezierPath,然后再增加自己的颜色和宽度属性...代码: 1、自定义PaintingBezierPath类继承自UIBezierPath类,增加一个自定义路径颜色的属性;自定义构造函数,设置颜色和路径宽度 PaintingBezierPath.h文件代码...: #import @interface PaintingBezierPath : UIBezierPath @property (nonatomic, retain...// PaintingBezierPath.m 3 // tan_iosTwo 4 // 5 // Created by xiaom on 15/7/22. 6 // 7 // 为了自定义每个轨迹的宽度和颜色...的分类@interface UIView(UIViewRendering)中添加的方法 56 //setNeedsDisplay方法也是此分类中的方法 57 - (void)drawRect:(CGRect

    67730
    领券