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

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

本片文章前三章内容大家比较常用,后面的可能会不那么常用,前面的基础内容不想看了可以直接从第4段开始 圆角 conrnerRadius 这个功能还是很常见的,本来不想记了,为了整个系列的完整性,还是啰嗦一下...通过上面的示例可以发现: 只设置cornerRadius时,默认情况下,只影响背景颜色,而不影响背景图片或者子图层。 如果想要截取这个视图的图片和子视图,需要设置masksToBounds为YES。...下面我们用圆角下面的那个demo稍作修改做个示例: 首先对rightView做一个透明色的shadowView的包裹,用来设置阴影: ?...如果想了解的话请点击此处 组透明 alpha UIView有一个alpha属性来决定视图的透明度,对应的CALayer有一个opacity属性。这两个属性都会影响子层级的显示透明度。 下面做个示例。...但是如果图层包含一个同样显示50%透明的子图层时,你所看到的视图,50%来自子视图,25%来了图层本身的颜色,另外的25%则来自背景色。 如果想保持透明度一直。

1.1K30

动画分析步骤“三步曲”

但是这时所有的View视图并不是可见的。...4 UIView视图中常见动画的属性分析 我们在第2节和第3节主要依靠UIView下的frame属性来实现登录按钮从左到右的进入效果。那么UIView下的其他属性是不是也可以有类似的效果呢?...2.透明度属性:alpha(透明度属性、范围0-1、浮点型) UIView的alpha透明度属性也可以用作动画效果。当alpha为0时,表明UIView已经隐藏,当alpha为1时UIView显示。...每个UIView都有一个Layer图层,在这个图层中承载的是视图的内容,所以结合Layer可以实现很多高级的动画效果。当然除了这些之外,UIView还有很多其他属性,在后面的章节中会为大家一一呈现。...对于UIView中常见的动画属性,结合UIView对视图的位置、透明度、几何形状给大家做了简要的分析,在后面的章节中会结合具体的代码,为大家呈现缤纷多彩的动画效果。

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

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    首先我们遍历打印出UINavigationBar的所有子视图,是所有,包括子视图的一层层子视图,来看看到底导航栏都包含了哪些东西: 上面这张图就是导航栏UINavigationBar所包含的所有子view...了,序号和缩进表示了其层级归属关系,打印的方法可以看这篇文章:传送门:iOS遍历打印所有子视图 从这些子view的类名能够大概猜出他们都是导航栏上的什么,让我们大胆猜测一下,_UIBarBackground...有它在岂不是前功尽弃了,再用上面的方法已经不管用了,这条线不在我们找出来的子view之中,通过查资料,要隐藏这跟细线的方法很多,但是要跟我们对导航栏背景的设置不冲突,又要能到只在将导航栏背景设为透明时才隐藏...: 有一个参数就是界面滑动过程的百分比,那么我们获取上一个界面的导航栏透明度、下一个界面的导航栏透明度、以及滑动的进度,通过很简单的数学计算就可以得出当前进度应该对应的透明度是多少了,这里也可以看出我们给...,可以看一下: 是按照预想地在随着滑动界面的进度渐变透明度的,实际的效果也是这样的: 一些小瑕疵的修补 就目前的效果,其实还是不错的,不过也有一些小瑕疵,比如滑动到一半松手时会有一个小跳变,对于这一点

    3.1K40

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

    我们只能通过子类继承父类,重写子类方法的方式处理UIView的触摸事件(注意:我说的是UIView触摸事件而不是说的 UIViewController的触摸事件)。...UIView不能接收触摸事件的三种情况: 不允许交互:userInteractionEnabled = NO 隐藏:如果把父控件隐藏,那么子控件也会隐藏,隐藏的控件不能接受事件 透明度:如果设置一个控件的透明度...总结一下 1.点击一个UIView或产生一个触摸事件A,这个触摸事件A会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication)。...2.UIApplication会从事件对列中取出最前面的事件(此处假设为触摸事件A),把事件A传递给应用程序的主窗口(keyWindow)。...如果当前view是控制器的view,那么控制器就是上一个响应者,事件就传递给控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件就传递给它的父视图 2>在视图层次结构的最顶级视图

    11.4K70

    iOS-圆角、边框、阴影

    当设置成YES时,图层里面所有东西都会被截取 边框 边框需要设置layer的两个属性,borderWidth和borderColor,并且边框是沿着图层bounds绘制,同时包含图层的角 borderWidth...3)shadowOffset 阴影的方向和距离,默认是(0, -3),即阴影相对于Y轴有3个点的向上位移 4)shadowRadius 阴影的模糊度,当它的值是0的时候,阴影就和视图一样有一个非常确定的边界线...属性为YES 时,阴影就会被裁剪掉 圆角+阴影 从上面我们可以得出,因为对裁剪属性不同需求,在一个view上,圆角和阴影一般是不可并存的,那么我们需要怎么办呢?...在解决这个问题之前,我们还需要了解阴影的另一个特性:阴影是依据view内容的外形确定的,而不是根据边界和角半径来确定,下面放张图来解释一下 ?...阴影是通过里面的飞机来计算 所以,我们圆角加阴影的实现方案就出来了,我们可以用两个视图来实现,一个只画阴影的空的外图层,和一个经过裁剪的内图层,这样外图层的阴影会根据裁剪过后的内图层来计算,这样看起来就即有阴影又有圆角了

    2.7K50

    《Motion Design for iOS》(十六)

    虽然在名字中有动画的单词,不要让它误导你以为它只能做这个;它实际上负责屏幕上显示的所有视图的整体渲染体系结构,可以非常快速地进行透明度计算、图像过滤和视觉效果。...当你在屏幕上操作一个UIView的布局或方向的时候,你实际上在移动它的CALayer。...Core Animation在硬件层面管理合成并操作你app的界面内容,与显卡对话并精简你界面的渲染,让它变得快速而不迟缓。iOS中所有的动画性能都是由Core Animation框架实现的。...你不是非得要用UIView对象来构建你的界面,也可以使用CALayer对象来代替,像视图一样将它们按照父视图-子视图的类型放置,只不过替换成父图层-子图层。...虽然你可以只是用CALayer不用视图来实现一个app的界面,大部分的iOS开发者仍然都会使用UIView对象而不是直接使用CALayer对象来构建app界面,除非他们在做一些严肃的图形处理或者一次性布局成百上千的图形

    28110

    iOS点击TableView的cell显示弹出动画

    cell还亮着,然后有一点点的放大效果,同时cell的界面在慢慢变成纯白色,最后上下炸开进入内容界面,其实仔细想想,这个和3D Touch的peek效果的前奏不是很像嘛。...,背景的阴影视图是固定大小的,即使覆盖整个界面,cell视图和纯白视图要根据点击的位置决定,所以阴影视图可以直接写一个方法来创建: // 阴影视图 - (UIView *)bgView { if...:self.selectedCell]; // 实例化纯白视图,范围和cell视图一样,先做成透明 self.tempView = [[UIView alloc] initWithFrame...CGAffineTransformMakeScale(1.0, 1.1); // 纯白视图的透明度设为不透明,这样就会覆盖cell视图 self.tempView.alpha...,我们来拆分一下,整个动画分为三个过程: 第一个过程是加阴影,新创建一个对应的cell显示出来,在动画中稍微增大cell凸显效果,同时有一个纯白视图慢慢覆盖cell视图; 第二个过程是炸开纯白视图,在动画中将其的大小设为整个屏幕大小

    1.5K10

    IOS开发系列——UIView专题之五:常用开发技巧篇

    5UIView开发技巧 5.1常用技巧 5.1.1使用半透明View与不透明SubView 半透明背景视图只能用此种方法设置颜色,否则subView也是半透明的。...:返回nil; •若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从subviews数组的末尾向前遍历...,直到有子视图返回非空对象或者全部子视图遍历完毕; •若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; •如所有子视图都返回非,则hitTest:withEvent...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别...对于每个触摸操作都会有一个UITouch对象,UITouch对象用来表示一个触摸操作,即一个手指在屏幕上按下、移动、离开的整个过程。

    1.2K20

    图层树和寄宿图 -- iOS Core Animation 系列一

    视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS中,所有的视图都是从UIView这个基类派生出来的。...但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...UIView大多数视觉相关的属性比如contentMode,对这些属性的操作其实是对对应图层的操作。...2.1.4 maskToBounds 看上面最新的运行图,发现图片超出了视图的边界。因为默认情况下,UIView仍会绘制超过边界的内容,在CALayer也不例外。...上图设置的contentsRect是{0, 0, 0.5, 0.5} 事实上contentsRect设置一个负数的原点或者大于{1, 1}的尺寸也是可以的。这种情况下,最外面的像素会被拉伸。

    1.2K20

    iOS中的事件的产生和传递

    2.UIApplication会从事件对列中取出最前面的事件(触摸事件A),把事件A传递给应用程序的keyWindow。...2.2UIView不能接收触摸事件的三种情况 1.不允许交互:userInteractionEnabled = NO 2.隐藏:如果把父控件隐藏,那么子控件也会隐藏,隐藏的控件不能接受事件 3.透明度...:如果设置一个控件的透明度的透明度。...image.png 1.如果当前view是控制器的view,那么控制器就是上一个响应者,事件就传递给控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件就传递给它的父视图...> UIWindow -> UIView -> initial view,以上就是事件的传递,也就是寻找最合适的view的过程 3.2.1事件响应 首先看initial view能否处理这个事件,如果不能则会将事件传递给其上级视图

    91210

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

    这个只发生在接收者从它的父视图上移除或者接收者添加到父视图中而不是添加到window中。...• 改变透明度:改变视图的alpha值。     • 改变状态:隐藏或显示状态。     • 改变视图层次顺序:视图哪个前哪个后。     ...发出beginAnimations:context:请求标志着动画块的开始;commitAnimations标志着动画块的结束。把这两个类方法发送给UIView而不是发送给单独的视图。...iOS中,hit-Testing的作用就是找出这个触摸点下面的View是什么,HitTest会检测这个点击的点是不是发生在这个View上,如果是的话,就会去遍历这个View的subviews,直到找到最小的能够处理事件的...最后,附上官方的文档 Event Handling Guide for iOS 6 UIView开发技巧 6.1 常用技巧 6.1.1 使用半透明View与不透明SubView         半透明背景视图只能用此种方法设置颜色

    70630

    iOS动画开发之一——UIViewAnimation动画的使用

    iOS开发中,常用的动画处理有UIView动画编程和核心动画编程,其中UIView动画使用简便,开发中应用十分广泛。这篇博客,主要讨论UIView的动画使用。...例如在1S内将view渐变透明: [UIView animateWithDuration:1 animations:^{         _myView.alpha=0;     }]; + (void...,作为补充,例如下面代码的效果,在1S内将view渐变为透明,动画结束后,view在瞬间变回不透明: [UIView animateWithDuration:1 animations:^{         ...velocity参数用于设置弹簧的初始速度。 三、UIView动画可以操作的视图属性        通过上面的介绍,我们了解了几个使用动画的函数,那么那些属性可以产生动画效果呢?...   UIViewAnimationOptionShowHideTransitionViews   = 1 视图切换时隐藏,而不是移除    UIViewAnimationOptionOverrideInheritedOptions

    1.3K30

    《Motion Design for iOS》(十五)

    从UIKit和CoreAnimation开始 通常情况下,iOS app中屏幕上的物体都是UIView对象。它们是矩形的并且有坐标和大小来定义它们在屏幕上的位置和尺寸。...UIView是用来构建你的界面的UIKit Framework中基本的界面对象。每个视图都可能伴随着文本、形状或图片绘制。...如果你不熟悉iOS用户界面开发,看看一些你喜欢的app,看能不能找出界面中所有的视图,以此作为分解你自己设计的练习,这样你就可以学习在代码中构建它们。...UIView对象有很多的职责,其中之一就是事件处理,即响应触摸事件。如果你想的话你界面中的所有视图都可以响应触摸事件,或者你可以指定只有特定的视图会在用户触摸它们时响应。...一个UIView本质上是一个包含内部图形的矩形。在屏幕上布局,靠近或在其他视图的顶部,还可能会有高级的透明效果来整合到一起或者快速绘制。

    85640

    iOS 系统中的视图动画

    iOS 系统中的视图动画 动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。...Alpha 改变视图的透明度。 BackgroundColor 修改视图的背景色。 ContentStretch 改变视图内容在视图的可用空间内的拉伸方式。..., 则推荐使用下面的 lambda (block based method) 来实现动画效果, 虽然 begin/commit 还能够使用, 按照官方的说法, 对新系统来说是不推荐的了。..., 这可能不是原来期望的动画效果。...修改子视图 可以修改子视图的可见性用来表示当前视图的不同的状态, 看下面的两个视图切换的例子,在 iOS 4.0 之前, 需要将视图切换动画添加到 Begin/Commit 动画之间, 代码如下: 在

    2.2K30

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

    默认情况下,UIView仍然会绘制超过边界的内容或是子视图,在CALayer下也是这样的。        ...默认情况下,这个曲率值只影响背景颜色而不影响背景图片或是子图层。不过,如果把masksToBounds设置成YES的话,图层里面的所有东西都会被截取。        ...1.8.8 组透明         UIView有一个叫做alpha的属性来确定视图的透明度。CALayer有一个等同的属性叫做opacity,这两个属性都是影响子层级的。...如果需要动态地创建光线效果,你可以根据每个视图的方向应用不同的alpha值做出半透明的阴影图层,但为了计算阴影图层的不透明度,你需要得到每个面的正太向量(垂直于表面的向量),然后根据一个想象的光源计算出两个向量叉乘结果...这并不是因为iOS在3D场景下正确地处理响应事件,实际上是可以做到的。问题在于视图顺序。在第三章中我们简要提到过,点击事件的处理由视图在父视图中的顺序决定的,并不是3D空间中的Z轴顺序。

    56910

    自定义一个浮层弹窗视图

    都是对CoreAnimation的封装)都是通过CoreAnimation实现的。...这些UIView内置动画,实际上都是对CoreAnimation动画的封装。...实现一个自定义弹窗视图 我们平时在开发的时候,经常会遇到这样的需求:在页面中弹出一个自定义视图,除了弹出的自定义视图之外,页面的其他位置都置灰态。比如下图这样: ?...要实现这样的效果,基本思路是: 1,新建一个弹窗背景视图,背景颜色设置为黑色,透明度设置为0.5; 2,将自定义弹窗视图加在弹窗背景视图上; 3,触发弹出弹窗视图的时候,将弹窗背景视图添加到程序的根窗口上...展示浮层上的自定义提示视图的时候,我使用了UIView的动画,可以在这里实现浮层上的自定义提示视图展示时候的动画。 给浮层的背景视图添加一个点击手势,以在点击的时候移除该浮层。

    1.4K30

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

    官方文档可以让你更好地理解每一个技术点实现的基本原理,知其然更要知其所以然,这样对iOS开发的进阶者和初学者都有很大的帮助; 最后,翻译官方文档可以让你更加全神贯注,写代码的过中会出现分神、思维混沌等现象...然而,在那些你需要的控制远多于视图渲染和动画行为的情形下,你需要通过图层来执行相应的操作。 为理解视图和图层的关系,下面的例子会对你有所帮助。图1-1展示了从视图切换例子应用到底层核心动画层的关系。...应用中的视图包括窗口(本身也是视图),一个作为视图容器的UIView对象,一个图片视图,一个展示控制的工具条,一个条按钮项(它本身不是视图,但他管理内部的视图)。...每个视图都有一个响应图层,并且可以通过视图的 layer属性访问到其中,由于条按钮项不是视图,故不能直接访问它的 layer属性。...如果子视图是完全不透明的,有子视图组成的区域将会完全掩盖父视图相应地区域。如果子视图部分透明,在屏幕显示之前,父视图和子视图的内容就会混合在一起。

    1K40

    iOS导航栏使用总结

    ,用于优化滑动类视图(继承于UIScrollView的视图)在视图控制里的显示: iOS系统的导航栏UINavigationBar与标签栏UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器的...我们可以通过一段代码来测试一下效果,在默认导航栏(半透明)的视图控制器里添加如下代码: //UITextView是滑动视图,内容自动向下偏移,不会被导航栏覆盖 UITextView *leftTextView...人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。"...导航栏透明情况下,滑动视图自动偏移,普通视图被遮挡 其实,这种系统的优化也是可以控制关闭的,关闭优化之后,滑动视图就会和普通视图一样,如果还设置其布局的原点是(0,0),其内容就会被导航栏所覆盖,关键代码如下...self.edgesForExtendedLayout=UIRectEdgeNone 3.导航栏透明属性translucent 上述两种属性都是在解决导航栏半透明情况下的布局问题,但是如果我们的需求就是导航栏不透明

    3.2K20
    领券