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

视觉效果 -- iOS Core Animation 系列三

通过上面的示例可以发现: 只设置cornerRadius时,默认情况下,只影响背景颜色,而不影响背景图片或者子图层。 如果想要截取这个视图的图片和子视图,需要设置masksToBounds为YES。...如上面的示例的结果一样,边框并不会把寄宿图或子图层的相撞计算出来。而且绘制边框会显示在最上层。 阴影 shadow 阴影属性 控制图层阴影的属性会比前面的边框多一些。...如果想了解的话请点击此处 组透明 alpha UIView有一个alpha属性来决定视图的透明度,对应的CALayer有一个opacity属性。这两个属性都会影响子层级的显示透明度。 下面做个示例。...当显示一个50%透明度的图层时,图层的每个像素都会一半显示自己的颜色,另一半显示图层下面的颜色。这是正常的透明度的表现。...但是如果图层包含一个同样显示50%透明的子图层时,你所看到的视图,50%来自子视图,25%来了图层本身的颜色,另外的25%则来自背景色。 如果想保持透明度一直。

1.1K30

【IOS开发基础系列】UIView专题

- (BOOL)isDescendantOfView:(UIView *)view 参数 view     一个视图用来测试子视图在视图层次中的关系 返回值     如果接收者是视图的子视图就返回YES...消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了 3 UIView动画 3.1 概述         UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验...• 改变透明度:改变视图的alpha值。     • 改变状态:隐藏或显示状态。     • 改变视图层次顺序:视图哪个前哪个后。     ...使用Core Animation时,应该将CATransition应用到视图的默认图层([myView layer])而不是视图本身。         ...hit-testing顺序是按照UIView中Subviews的逆顺序;     2、如果View的同级别Subview中有重叠的部分,则优先检查顶部的Subview,如果顶部的Subview返回nil

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

    iOS动画-CAAnimation使用详解

    10.虚拟属性及其作用 11.动画的取消 一、动画的分类 1、实现动画的方式 如果根据实现动画时直接操作对象的类型,我们可以简单的将动画分为视图和图层两种;但事实上,无论UIViewAnimaiton...CFTimeInterval 动画开始之前的延迟时间,这里的延迟从动画添加到可见图层上那一刻开始测量;(设置动画beginTime为1,动画将延时1秒后开始执行) duration CFTimeInterval...,图层也会恢复到动画执行前的状态;当其修改为NO时,那么图层将会保持动画结束后的状态,此时的fillMode属性也将生效; 另外,removedOnCompletion设置为NO时,直到我们手动移除动画...所以,苹果将CATransition作为设置CALayer的contents属性时的默认行为,对图层contents图片做的改动都会自动附上淡入淡出的效果,这也就解释了隐式动画的原理; 但注意: 1...通常视图控制器本身会作为一个委托,但所有动画都会调用同一个回调方法,所以我们需要判断到底是哪个图层的动画调用; 首先,动画本身会作为一个参数传入委托的方法,也许你会认为可以在控制器中把动画存储为一个属性

    2.4K10

    iOS UI控件了解一下

    创建view的步骤如下: ①开辟空间并初始化视图(初始化时,给出视图位置和大小) ②对视图做一些设置(比如:背景颜色) ③将视图添加到window上进行显示 ④释放视图对象 视图创建代码: UIView...当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。...UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。...UIView提供了其他添加视图的方法(详见下表): ? 2)管理视图层次 UIView除了提供添加视图的方法,还提供了管理视图层次的方法(详见下表): ?...(2)UILabel是UIView子类,作为子类一般是为了扩充父类的功能,UILabel扩展了文字显示的功能,UILabel是能显示文字的视图。 2)如何使用UILabel?

    2.6K20

    iOS学习——UIPickerView的实现年月选择器

    ) UIView *alertView; // 标题行顶部视图 @property (nonatomic, strong) UIView *topView; // 左边取消按钮 @property (nonatomic...]; 19 // 设置弹出视图子视图 20 // 添加顶部标题栏 21 [self.alertView addSubview:self.topView]; 22...下面主要提两个问题:一个是整体布局的方法 - (void)initUI 的实现。这里大家主要要注意的添加的层次,谁是谁的子视图,一定要区分清楚。...]; // 弹出视图 [self addSubview:self.alertView]; // 设置弹出视图子视图 // 添加顶部标题栏 [self.alertView...如果直接在蒙层上添加弹出式图作为子视图的话,我们的布局相对会简单很多,这里涉及到一点就是子视图的透明度是和父视图保持一致的,如果直接将弹出视图加载到蒙层遮罩视图上,会导致弹出视图的透明度也为0.3,所以弹出视图不能直接加在蒙层遮罩视图上

    4.6K130

    【IOS开发进阶系列】动画专题

    这样对于放置图层会更加方便,因为你可以通过移动根图层来将它的子图层作为一个整体来移动,但是有时候你需要知道一个图层的绝对位置,或者是相对于另一个图层的位置,而不是它当前父图层的位置。        ...图3.8 在视图层级中绿色视图被绘制在红色视图的后面         我们希望在真实的应用中也能显示出绘图的顺序,同样地,如果我们提高绿色视图的zPosition(清单3.3),我们会发现顺序就反了...这并不是因为iOS在3D场景下正确地处理响应事件,实际上是可以做到的。问题在于视图顺序。在第三章中我们简要提到过,点击事件的处理由视图在父视图中的顺序决定的,并不是3D空间中的Z轴顺序。...-hitTest:方法时,测算的顺序严格依赖于图层树当中的图层顺序(和UIView处理事件类似)。...但是并不像以前那样直接将立方面添加到容器视图的宿主图层,我们将他们放置到一个CATransformLayer中创建一个独立的立方体对象,然后将两个这样的立方体放进容器中。

    56910

    Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

    3)、在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层:@property (nonatomic,readonly,...retain) CALayer *layer; 4)、当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了...  view : 需要进行转场动画的视图   options : 转场动画的类型   animations : 将改变视图属性的代码放在这个block中   completion : 动画结束后,会自动调用这个...,而NSTimer无法确保计时器实际被触发的准确时间   使用方法:   定义CADisplayLink并制定触发调用方法   将显示链接添加到主运行循环队列 3、代码演示 1)时钟器,和当前计算机时间同步...;0表示透明,阴影看不见 38 39 //1.2增加子图层 40 CALayer *subLayer = [[CALayer alloc] init]; 41

    1.5K30

    大前端开发中的“树” (下)

    文本或者背景色),管理子图层的位置,在数据结构上构成树的形式,称之为图层树;图层树的能力包括: 阴影、圆角、带颜色的边框 3D 变换 非矩形范围 透明遮罩 多级非线性动画 在 CALayer 的工作过程中...它的作用是,CALayer 在做隐式动画时,CoreAnimation 就需要在设置一次新值和新值生效之间,对屏幕上的图层进行重新组织。...build 流程 某一个节点需要刷新时,会将自己添加到一个单例对象 Owner 的 dirty 列表中,表示自己需要更新。...我们可以通过将图层按顺序叠放起来最终得到想要的图案。它的行为相对较独立,并且主要作用于创建它的 RenderObject ,因此在其他资料的树结构中常常不会提及它。...以动画系统为例,iOS 的视图系统把动画配置作为视图树描述的一部分,直到渲染时才计算实际值,从而提升动画性能;而 Android 渲染过程一般依靠视图树的变化实现动画,相比之下增加了处理环节。

    1.9K30

    动画分析步骤“三步曲”

    其实产品设计师在设计动画时,如果能够将动画分解为单帧图像,或者能够较为慢速地展现动画的变化过程,那么对于算法分析师和程序员分析动画的原理,以及设计合适的展现算法起着非常重要的作用。...最后一行将按钮添加到self.view图层上。...2.透明度属性:alpha(透明度属性、范围0-1、浮点型) UIView的alpha透明度属性也可以用作动画效果。当alpha为0时,表明UIView已经隐藏,当alpha为1时UIView显示。...每个UIView都有一个Layer图层,在这个图层中承载的是视图的内容,所以结合Layer可以实现很多高级的动画效果。当然除了这些之外,UIView还有很多其他属性,在后面的章节中会为大家一一呈现。...对于UIView中常见的动画属性,结合UIView对视图的位置、透明度、几何形状给大家做了简要的分析,在后面的章节中会结合具体的代码,为大家呈现缤纷多彩的动画效果。

    90710

    《Motion Design for iOS》(十五)

    UIView是用来构建你的界面的UIKit Framework中基本的界面对象。每个视图都可能伴随着文本、形状或图片绘制。...这些是为某些功能或特性特定的特殊的UIView对象。包括作为界面按钮的UIButton、用来显示图片的UIImageView、显示文本的UILabel和显示列表的UITableView。...视图,用来包含UITableView中一行的元素 UILabel中的帖子标题 评论数量UIButton,由一个评论气泡图和评论的数量组成 显示帖子URL的UILable UILabel中显示帖子的点值和子板...UIView对象有很多的职责,其中之一就是事件处理,即响应触摸事件。如果你想的话你界面中的所有视图都可以响应触摸事件,或者你可以指定只有特定的视图会在用户触摸它们时响应。...一个UIView本质上是一个包含内部图形的矩形。在屏幕上布局,靠近或在其他视图的顶部,还可能会有高级的透明效果来整合到一起或者快速绘制。

    85640

    iOS开发~UIView layer 之前的关系

    不错 UIView 确实只有一个layer 属性,但是layer 是可以叠加的,layer 可以叠加在 layer 上面,所以这个layer 就相当于是一块底板,我们可以在这块地板上叠加一些透明胶片(子图层...当你用 addSublayer 来添加一个子图层时,他会被添加到图层层次结构的顶层,所以他会显示在现有所有子图层的最前面。...你可以直接将转场动画用于图层或子图层。动画可以作为 CAtransition 对象创建出来。...这个对象作用于视图的图层,根据期望的三维设置对图层进行弯折或者其他操作。应用程序可以仍然将对象看作是二维的,但是当对象呈现给用户时,会遵从已经作用于图层之上的任何变换。...如果草棍是沿着 x 轴插进去的,那么图像将绕着草棍垂直旋转。你可以使用不同角度值作为轴,产生出更复杂的转动。不过对于大多数用途来说,用-1 和 +1 这两个值就够了。

    1.2K40

    iOS面试题-UI篇

    可以响应用户事件,Xcode6之后可以方便的通过视图调试功能查看图层之间的关系 UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。...特别是如果在我们的界面上有多个这样的UIButton实例,那就会很糟糕了 面试题持续整理更新中,如果你正在面试或者想一起进阶,不妨添加一下交流群1012951431一起交流。...当你调用 setNeedsDisplay 方法时, UIKit 将会把当前图层标记为dirty,但还是会显示原来的内容,直到下一次的视图渲染周期,才会将标记为 dirty 的图层重新建立Core Graphics...view的 可以通过纯代码或者xib的方式来封装子控件 建立一个跟view相关的模型,然后将模型数据传给view,通过模型上的数据给view的子控件赋值 /** * 纯代码初始化控件时一定会走这个方法...,那么就自己处理 事件响应者链 如果当前view是控制器的view,那么就传递给控制器 如果控制器不存在,则将其传递给它的父控件 在视图层次结构的最顶层视图也不能处理接收到的事件或消息,则将事件或消息传递给

    2K21

    事件传递、响应者链条

    -> UIWindow -> Root View -> subview -> ··· -> initalView 系统检测到手指触摸(Touch)操作时,将Touch 以UIEvent的方式加入UIApplication...:原理 // point是该视图的坐标系上的点 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { // 1.判断自己能否接收触摸事件...在视图层次结构的最顶级视图,传递给ViewController ViewController将事件传递给window对象进行处理 window对象继续将事件或消息传递给UIApplication...四、实例分析 UIButton的继承链是: UIButton->UIControl->UIView->UIResponder->NSObject UIApplication能够接受事件,因为UIApplication...和UIView一样继承自UIResponder 下面是一个点击事件的方法过程 UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd

    89010

    iOS Core Animation:Advanced Techniques

    如果我们想依照此图形来剪裁视图内容,我们可以把CAShapeLayer作为视图的宿主图层,而不是添加一个子视图(图层蒙板的详细解释见第四章『视觉效果』)。...CATransformLayer并不平面化它的子图层,所以它能够用于构造一个层级的3D结构 第4篇:CAGradientLayer CAGradientLayer是用来生成两种或更多颜色平滑渐变的。...它会绘制一个或多个图层的子图层,并在每个复制体上应用不同的变换。...UIView关联的图层禁用了隐式动画,对这种图层做动画的唯一办法就是使用UIView的动画函数(而不是依赖CATransaction),或者继承UIView,并覆盖-actionForLayer:forKey...但是对于视图关联的图层,或者是其他隐式动画的行为,这个特性依然是被禁用的,但是对于你自己创建的图层,这意味着对图层contents图片做的改动都会自动附上淡入淡出的动画。

    1.9K30

    【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃

    (3)还有一个重要的知识是对navigationItem的设置,这个属性和navigationController是平级的,所以直接能够用self.navigationItem使用。...注意后面这个和前面这个相比,多了一个“s”。有非常多个。也要注意一下有多个button时的排列顺序。 (5)我们创建的这些导航条button有非常多种形式。...有的是由文字的,有的时图片,有的时系统自带的如摄像头或者Reply这些icon,有的全然是自定义的视图。...事实上它们有的时不透明有的时透明有的时半透明,但不知为何无效果 self.navigationController.navigationBar.barStyle=UIBarStyleDefault...事实上是导航控制器在控制,在里面的元素都能够通过navigationController属性获取到它们所在的导航控制器 //所以(2)获取到导航控制器之后,使用Push的那个方法,往栈里面放一个视图控制器

    2.4K10

    翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系

    在这些图层对象的后面是核心动画渲染对象和用于管理屏幕具体像素的硬件缓冲区。 ? 图1-1例子应用视图的体系结构 使用核心动画图层对象对于性能提升有重要的意义。...这种复用机制与创建新的内容相比,消耗的成本更低。 视图层次和子视图的管理#### 一个视图在呈现自身内容之外,还可以作为其他视图的容器。当一个视图包含另一个视图时,两个视图间的父子关系就创建出来了。...如果子视图是完全不透明的,有子视图组成的区域将会完全掩盖父视图相应地区域。如果子视图部分透明,在屏幕显示之前,父视图和子视图的内容就会混合在一起。...另一些影响子视图的变化有:隐藏父视图、改变父视图的透明度、将数学变化应用到父视图的坐标系统中。 在视图层次中管理视图决定着你的应用是如何响应事件的。...当你视图的内容改变时,你没有直接重新绘制这些改变。相反,你可以使用setNeedsDisplay或者setNeedsDisplayInRect:方法使你的视图失效。

    1K40

    史上最详细的iOS之事件的传递和响应机制-原理篇

    总结一下 1.点击一个UIView或产生一个触摸事件A,这个触摸事件A会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication)。...注意:如果设置父控件的透明度或者hidden,会直接影响到子控件的透明度和hidden。如果父控件的透明度为0或者hidden = YES,那么子控件也是不可见的! 3.3....因为会存在这么一种情况:当遍历子控件时,如果触摸点不在子控件A自己身上而是在子控件B身上,还要要求返回子控件A作为最合适的view,采用返回自己的方法可能会导致还没有来得及遍历A自己,就有可能已经遍历了点真正所在的...4.2.响应者链条示意图 响应者链条:在iOS程序中无论是最后面的UIWindow还是最前面的某个按钮,它们的摆放是有前后关系的,一个控件可以放到另一个控件上面或下面,那么用户点击某个控件时是触发上面的控件还是下面的控件呢...,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理 3>如果window对象也不处理,则其将事件或消息传递给UIApplication对象 4>如果UIApplication

    11.4K70

    iOS14适配【解决UITableViewCell兼容问题(往cell添加子视图的方式不规范)】

    文章目录 前言 I、问题分析 1.0 其他分析视图层级的方法:私有API _printHierarchy 和recursiveDescription 1.1 注意事项 II、使用方法交换,全局修改...I、问题分析 iOS14 UITableViewCell的子试图不能点击或者滑动等手势响应问题,发现有问题的cell基本都是直接 cell.addSubView(tempView1) 这种方式添加的,通过...= (0 0; 0 0); userInteractionEnabled = NO; layer = > 1.1 注意事项 因为此问题涉及的是添加子视图...所以通过Runtime hook cell的addSubView 方法强制修改为正确的添加cell 子视图的方式 2.1 全局修改 只允许添加 UITableViewCellContentView,其余都直接添加到...{ [self.contentView addSubview:view]; } } @end 2.2 注意事项 因为此问题涉及的是添加子视图

    2.6K20

    将模型添加到场景中 - 在您的环境中显示3D内容

    基本视图 在Main.Storyboard中,我们已经提到ARSCNView默认放在视图控制器的顶部。但是,如果没有UIView作为基础,则仅限于您可以在用户界面上执行的操作。...为了能够正确添加我们的按钮,我们必须删除当前的 ARSCNView并首先从对象库添加UIView作为底层。接下来,选择相同的ARKit SceneKit View并将其放回UIView之上。...调整大小以填充整个视图控制器。 约束 然后,单击Storyboard编辑器左下角的第四个图标,将新约束添加到场景视图中。定义约束以确保您的用户界面适应不同的屏幕尺寸或设备方向。...添加按钮 我们想在视图中添加一个按钮,用作在场景中添加模型的触发器。从对象库中,将UIButton拖动到场景视图的顶部。在“ 属性”检查器中,删除“ 按钮”标题并将图像设置为“ 按钮/添加”。...当我们触摸它时,让按钮执行某些操作。现在,打开Assistant编辑器并控制将故事板中的按钮拖到ViewController类。代码中的顺序并不重要,因为我们稍后会移动此函数。

    5.5K20
    领券