首页
学习
活动
专区
工具
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

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

iOS动画-CAAnimation使用详解

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

2.2K10

iOS UI控件了解一下

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

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

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

40710

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

3)、在创建UIView对象UIView内部会自动创建一个图层(即CALayer对象),通过UIViewlayer属性可以访问这个层:@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.4K30

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

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

1.9K30

动画分析步骤“三步曲”

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

86710

《Motion Design for iOS》(十五)

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

84740

iOS开发~UIView layer 之前关系

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

1.2K40

iOS UIButton 点击无响应解决办法

3、按钮frame超出了父视图frame,这个最容易出现,按钮freme必须在父视图frame内部点击才有效,如下图,按钮点击红框里区域不响应。...解决超出点击区域问题 这种情况其实很有可能发生,举个我碰到栗子:聊天区域高度小于键盘高度,而输入框聊天区域View,在键盘弹出后,输入框上移,而且超出了父视图frame,这个时候点击红框按钮切换表情键盘动作就不响应...withEvent:返回nil; 若返回YES,则向当前视图所有视图(subviews)发送hitTest:withEvent:消息,所有视图遍历顺序从top到bottom,即从subviews...数组末尾向前遍历,直到有视图返回非空对象或者全部视图遍历完毕; 若第一次有视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; 如所有视图都返回非,则hitTest...所以我们可以在返回nil进行处理,因为这个时候button在父View外 //返回一个view来响应事件 - (UIView *)hitTest:(CGPoint)point withEvent:

3.3K10

iOS面试题-UI篇

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

1.9K21

事件传递、响应者链条

-> 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

85210

【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.2K10

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

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

98940

iOS Core Animation:Advanced Techniques

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

1.8K30

史上最详细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

10.7K70

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 celladdSubView 方法强制修改为正确添加cell 视图方式 2.1 全局修改 只允许添加 UITableViewCellContentView,其余都直接添加到...{ [self.contentView addSubview:view]; } } @end 2.2 注意事项 因为此问题涉及添加视图

2.5K20
领券