Windows本身没有任何可见的内容,但为应用程序的views提供了一个基本的容器。 views定义了您想要填充某些内容的windows的一部分。...无论您使用系统View还是创建自己的自定义View,都需要了解UIView和UIWindow类提供的基础结构。 这些课程提供先进的设施来管理View的布局和表示。...bounds矩形在View的本地坐标系中表示。此矩形的默认原点是(0,0),其大小与frame矩形的大小相匹配。您在此矩形内绘制的任何东西都是view可见内容的一部分。...如果更改bounds矩形的原点,则在新矩形内绘制的内容将成为view可见内容的一部分。 图显示了图像View的frame和bounds之间的关系。...对于iPhone应用程序,每个view层次结构通常填充整个屏幕,但对于iPad应用程序,view层次结构可能只填充屏幕的一部分。
他是一个二维的绘图引擎,同时支持iOS和Mac系统 2、Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView. 3、Quartz2D在开发中的价值 当我们的控件样式极其复杂时...Graphics Context(图层上下文,自定义UIView取得上下文就是图层上下文....UIView之所以能够显示就是因为他内部有一个图层) Printer Graphics Context 6.如何自定义UIView,步骤是什么? ...(125, 10)]; 12、如何画矩形,圆角矩形?...5; //画边框 [path stroke]; //填充内部 [path fill]; 15、如何画圆弧?
序:本文翻译自苹果官方文档,自己想系统的了解每个控件的官方解释。只翻译了部分,详情见官方文档。 UIView UIView类定义了一个矩形区域在屏幕上和管理内容的接口。...Overview 在运行时,一个视图对象处理任何内容的呈现它的面积,还处理任何与内容交互。UIView类本身提供了基本行为与背景颜色填充的矩形区域。...框架定义了视图的起源和维度的坐标系统中常用它的父视图和布局调整视图的大小或位置。中心属性可以用来调整视图的位置不改变它的大小。边界定义视图,把他们的内部维度和几乎完全用于自定义代码。...的尺寸部分框架和边界矩形耦合在一起,因此改变大小的矩形更新的大小。如何使用UIView类的详细信息,看到视图iOS编程指南。...UIView类做的大部分工作执行实际的动画,但你还必须表明哪个属性改变你想要动画。
CoreGraphics也称为Quartz 2D 是UIKit下的主要绘图系统,频繁的用于绘制自定义视图。Core Graphics是高度集成于UIView和其他UIKit部分的。...自定义绘图大部分是由UIKit或者Core Graphics来实现的。 由于像素是依赖于目标的,所以2D绘图并不能操作单独的像素,我们可以从上下文(Context)读取它。...关于填充颜色 有三种方式 填充笔触,就是只给路径描边 根据路径填充颜色 填充笔触和颜色 填充颜色也分为非零绕数规则和奇偶规则,这个概念比较复杂难以解释,大家可以百度看看或者画几个图试试就明白。...不是填充 CGContextEOFillPath //使用奇偶规则填充当前路径 CGContextFillRect //填充指定的矩形 CGContextFillRects...//填充指定的一些矩形 CGContextFillEllipseInRect //填充指定矩形中的椭圆 常见的图形绘制 准备工作 新建一个文件,继承UIView 重写-(void
拆分方法 2:将整张图片先拆分为三个矩形,然后再把每个矩形拆分成两个三角形,得到 6 个三角形,8 个顶点,如下图: 这样一来就可以保证中间的矩形的高度可以任意变化而上下两部分的高度不变只改变位置,也就是说我们这个...DEMO 中所做的任何拉伸操作都是对中间矩形的操作,换而言之就是改变最上面的矩形和最下面的矩形之间的距离来达到对中间区域的拉伸和压缩的目的。..., //小矩形右上 -1.2, 1.2, //左上 1.2, 1.2, //右上 }; //填充纹理的数组 GLfloat texCoords[] =...13 1, 1, //右上 //下标为14 15 }; 手动选择区域:通过添加带有自定义手势的 UIView 来实现拖动修改选择区域。...Y 坐标返回,因为是竖直运动的所以我们只关心 Y 轴坐标。
在IOS上无论采用哪种绘图技术(UIKit、Quartz 2D、Core Animation和OpenGL ES),都离不开UIView,绘制都发生在UIView对象的区域内。...rect),填充矩形函数 - UIRectFrame(CGRect rect),矩形描边函数 - UIBezierPath,绘制常见路径类,包括险段、渐变、阴影、反锯齿等高级特性支持还是不及Quartz...在前面我们学会了如何在自定义view中绘制文本信息,其实绘制图片的方法绘制文本的方法非常类似,所以基本步骤如下: 导入素材 在DrawRect加载图片 UIImage *image = [UIImage...9、如何选用UIKit提供的方法快速画一个矩形?...UIRectFill(rect);快速的用矩形去填充一个区域 UIRectFrame(rect);快速绘制一个矩形的边框 10、用UIKit裁剪一个区域 UIRectClip(CGRectMake
contentMode和contentStretch属性确定在view的宽度或高度更改时如何处理内容。 contentScaleFactor属性仅在需要为高分辨率屏幕自定义view的绘制行为时使用。...对于具有自定义绘图行为的view,您必须重写drawRect:方法。 UIView类包含一个tag属性,您可以使用它来为各个view对象添加一个整数值。...这比归档实际的view对象更简单,特别是在只跟踪当前可见view的情况下。...图显示了一个转换过程中如何导致矩形大小改变的例子。 在图中,外部父view包含旋转的subview。 将subview坐标系中的矩形转换为父坐标系,得到一个物理上较大的矩形。...: touchesEnded:withEvent: touchesCancelled:withEvent: view的默认行为是一次只响应一次触摸。
iOS开发CoreAnimation解读之二——对CALayer的分析 一、UIView中的CALayer属性 1.Layer专门负责view的视图渲染 每一个UIView的对象中都有一个...2.自定义view默认layer属性的类 UIView是很多视图类的父类,根据功能不同,会分出UIImageView,UIScrollerView,UITableView等,CALayer...UIView其中的layer默认是CALyer类,我们也可以通过重写View中的如下方法来使其创建我们需要的layer类: +(Class)layerClass{ } 例如我们自定义一个View类,在自定义一个...Layer类,是的自定义的View默认创建的layer是自定义的layer: ?... contentsScale; 下面这个属性和内容拉伸相关: @property CGRect contentsCenter; 这个属性确定一个矩形区域,当内容进行拉伸或者缩放的时候,这一部分的区域是会被形变的
视图在屏幕上可以是一个矩形块,它能够拦截类似鼠标点击或者触摸手势等用户交互方式. 并且在层级关系上可以互相嵌套,一个视图可以管理它所有的子视图的位置等.在开发项目过程中,这是非常常见的一个使用场景....一个我们最常用的控件,我们是否真正了解它What's CALayer CALayer 类是一个与UIView 非常类似的类. 同样也是被层级关系树管理的矩形块....也可以填充为图片,文本或者背景颜色等. 也能管理子视图的位置.甚至CALayer 是有很多方法和属性来做动画处理和变换处理....因为他们之间的用户交互手段不一样.但是它们在功能上是非常类似的,所以都有CALayer ,而CALayer 只处理显示上的需求,不做交互上的需求处理.这样设计就可以减少非常多不必要的代码....还提供了很多其他内容的类. 1.MAC OS 与 iOS 通用的类: CAScrollLayer: CALayer 子类,简化显示图层的一部分内容,CAScrollLayer 对象的滚动区域范围在它的子图层中定义
本篇主要内容: 1.理解视图与图层 2.CALyer寄宿图与contents属性 3.UIView方法绘制自定义寄宿图 4.CALyer方法绘制自定义寄宿图 5.Frame与Bounds的区别...下面是一些UIView没有暴露出来的CALayer的功能: 设置阴影、圆角、带颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 二、CALyer寄宿图与contents属性 CALayer具有和...UIView一样的层级关系树,可用于显示一个矩形块。...;但这时候我们又不得不考虑一个问题:修改锚点可以让我们的动画围绕非中心点旋转,但是这也改变了原有视图的位置frame,这是我们不想要的结果,该如何解决呢?...(或视图)坐标系下的点或者矩形转换为另一个图层(或视图)坐标系下的点或者矩形;开发过程中我们通常操作的对象都是视图,所以下面以视图为例简单演示其用法:首先创建添加两个宽高都是100*100的橙色、紫色视图在控制器的
iOS有分多种图形上下文,其中UIView自带提供的在drawRect:方法中通过UIGraphicsGetCurrentContext获取,还有专门为图片处理的context,UIGraphicsBeginImageContext...当你子类化了一个UIView并实现了自己的drawRect:方法后,一旦drawRect:方法被调用,Cocoa就会为你创建一个图形上下文,此时你对图形上下文的所有绘图操作都会显示在UIView上。...填充一个路径的时候,路径里面的子路径都是独立填充的。...填充指定的矩形 CGContextFillRects 填充指定的一些矩形 CGContextFillEllipseInRect 填充指定矩形中的椭圆 CGContextDrawPath 两个参数决定填充规则...CGPathApply 每个元素的图形路径中,调用一个自定义应用功能。 CGPathMoveToPoint 开始在一个可变的图形路径指定一个位置,一个新的子路径。
这个只发生在接收者从它的父视图上移除或者接收者添加到父视图中而不是添加到window中。...如果子类是其他视图的容器那么它不需要重写这个方法。默认的实现不做任何事情。如果你自定义的视图是一个UIView子类,你不需要去调用它的父类实现。...注意如果它的父类实现绘制并且不透明属性为YES那么每一个子类都需要填充矩形。 ...当这个方法被调用,接收者可以假定他的帧在坐标上已经转换,边界矩形已经应用;所有他要做的就是绘制自定义的方法。...但是须知:CATransition只针对图层,不针对视图。图层是Core Animation与每个UIView产生联系的工作层面。
,通常使用这个方式来预留出一段空白,后面可以填充图片来达到图文混排的效果。...绘制路径的矩形大小位置pathBox的计算: ?...但是这些自定义的 key CoreText 是识别不了的,那么框架内部是如何处理的呢?...但是有一个自定义属性比较特殊: YYTextAttachmentAttributeName : YYTextAttachment 因为这个是添加一个附件 (UIImage、UIView、CALayer)...当然,上面图中的图片可以为UIView CALayer。到目前为止,占位 run 的位置已经确定了,接下来就需要把 UIImage UIView CALayer绘制到相应的空位上了。
在iOS开发及测试中,除了业务逻辑和算法之外,UI控件是最重要的一部分,因此熟悉UI控件及实现原理,对于了解开发实现和测试是相当必要的,这篇文章将给大家介绍常用的UI控件及实现。...下面我们将引入UIView; 3. UIView view(视图)代表屏幕上的一个矩形区域。...(2)UILabel是UIView子类,作为子类一般是为了扩充父类的功能,UILabel扩展了文字显示的功能,UILabel是能显示文字的视图。 2)如何使用UILabel?...6)输入控制: UITextField类提供了许多控制输入的API,包括密码模式、键盘样式、自定义键盘等(详见下表) ?...2)如何使用UIButton? 创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。
CALayer类在概念上和UIView类似,也是一些被层级关系树管理的矩形块,也可以包含一些内容,并且管理子视图的位置。...但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...contentsScale其实属于支持高分辨率屏幕机制的一部分,是用来判断在绘制图层的时候应该为寄宿图创建的空间大小,和需要显示的图片拉伸度(假设没有设置contentsGravity)。...默认的contentsRect是{0, 0, 1, 1},意味着整个寄宿图默认都是课件的。如果指定小一点的矩形,图片就会被裁剪: ?...-drawRect: 通过继承UIView来实现此方法进行自定义绘制。这个方法默认是没有被实现的。因为对于UIView来说,寄宿图不是必须的。
一、着手 我定义了一个UIView的子类,用于演示使用setNeedsDisplay,这个CircleView子类会在draw(_ rect: CGRect)方法内简单绘制一个圆,它有一个颜色属性,这是我们将要设置用来改变圆的颜色...color.setFill() path.fill() } } 注意: setNeedsDisplayInRect相当于setNeedsDisplay,除了它是指定视图的特定矩形区域更新...二、配置属性、组件 应用程序的下一部分是在故事板中配置一些UIKit组件,其中一个是CircleView。...我不会详细介绍如何配置storyboard,因为重点是了解setNeedsDisplay @IBOutlet weak var stepper: UIStepper!...而我们自定义了自己的UIView子类,所以我们需要处理影响显示的控件的更新。在改变颜色的情况下,当然需要我们自己控制重新绘制。
在栅格布局中所有视图不需要进行任何布局排列相关的约束设置,视图只负责内容、颜色、字体等相关属性的设置,而栅格则负责位置和尺寸对齐以及边界线相关的属性的设置。...栅格其实就是一个格子、一个矩形区域 我们来考察一个UIWindow以及一个UIView。发现他们其实都只是一个抽象的矩形区域。...当位置和尺寸设置好后,我们只需要在对应的矩形区域内填充内容就可以了,然后系统再分别渲染每个矩形区域内的内容,这样就呈现出了我们的界面了。...答案是否定的,既然上面说了我们的界面是由多个矩形区域组成,那么同样的在一个栅格布局中也应该是由多个栅格组成。如何来对栅格进行拆分,栅格和栅格之间的关系又是如何的?以及如何用栅格来描述一个界面呢?...因此我们可以借助actionData中的数据来支持栅格布局的一部分业务逻辑的动态化的能力。
UIView负责监听和相应事件.UIView是更高层的封装 在 iOS 中,你能看得见,摸得着的东西基本上都是UIView.比如一个按钮,一个文本标签,一个文本输入框, 一个图标等.这些都是UIView...,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时, UIView内部会自动创建一个图层 (即CALayer对象), 通过UIView的layer属性即可访问这个图层...其实,对比CALayer,UIView多了一个事件处理的功能,也就是说,CALayer不能处理用户的触摸事件,而UIView可以.所以,如果显示出来的东西需要跟用户进行交互的话,用UIView.UIView...:@"header"].CGImage); 调用自定义view的drawRect: 方法进行绘制 设置view的backgroundColor,调用colorWithPatternImage来进行设置...CATransform3DRotate(self.blueLayer.transform, M_PI_4 * 0.5, 1, 1, 1); 注意:上面属性如果同时使用非make方式,其中一个使用了make会导致动画只执行了
UIView是UIKit框架里面最基础的视图类。UIView类定义了一个矩形的区域,并管理该矩形区域内的所有屏幕显示。 控件 ?...image.png 1个UIWindow 或 UIView 1、设置背景色 import UIKit class ViewController:UIViewController { override...let view = UIView(frame:CGRect(x:40, y:80,width:240, height:240)) view.backgroundColor = UIColor.black...{ super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ---- 使用自定义视图...:新建Swift File import UIKit class RoundView:UIView { var color = UIColor.blue override init(frame:
由于老司机这个想起来啥说啥的特点,CALayer与UIView的一些关系以及CALayer的一些重要属性,早在老司机CoreAnimation系列第一章里面就已经做了很系统的介绍。...(其实老司机更愿意认为他是作为基类存在的,为所有子类提供公有属性及方法)由于作为基类的CALayer老司机已经介绍过了,所以接下来的两个子类老司机都会只讲述其差异性。...CAShapeLayer的优势 老生常谈了,肯定是性能啊(不提性能要如何装作一副很厉害的样子),他的渲染都在GPU里面,不!占!内!存! CAShapeLayer如何绘制出各种图形?...把它分成两部分吧,一部分外面不变那部分,一部分中间变那部分。 这时候我们就要考虑如何画出一个空心的图层。...,然而这还并不够,因为layer还要知道自己的填充判断规则,就是重要的fillRule属性。
领取专属 10元无门槛券
手把手带您无忧上云