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

iOS14开发-触摸与手势识别

方法 // 返回一个CGPoint类型的值,表示触摸在view上的位置。 // 返回的位置是针对view的坐标系。 // 调用时传入的view参数为空的话,返回的是触摸点在整个窗口的位置 。...此时需要重写 UITabBar 的point方法,判断当前触摸位置是否在中间凸起按钮的坐标范围内,如果在返回 true。这样可以让触摸事件传递到凸起按钮,并让其成为最佳响应者。...响应者对于触摸事件的响应和传递都是在touchesBegan方法中完成的。该方法默认是将事件顺着响应者链向上传递,即将事件交给上一个响应者进行处理。...默认的next对象为: (1)UIView:若当前响应者是 UIViewController 的view,则next是 UIViewController,否则上一个响应者是其父 UIView。...每个手势只对应一个 UIView,当屏幕触摸在当前 UIView 里时,如果手势和预定的一样,回调方法就会调用。 手势可以通过 storyboard 或者纯代码使用。

2.3K20

iOS学习——核心动画之Layer基础

= YES;  注意:设置图片的圆角时,除了设置圆角半径,还必须要进行第二步的裁剪,设置masksToBounds为yes。...position:它是用来设置当前的layer在父控件当中的位置的,默认它的坐标原点,以父控件的左上角为(0.0)点。   anchorPoint:锚点,就是把锚点定到position所指的位置。...它是决点CALayer身上哪一个点会在position属性所指的位置,anchorPoint它是以当前的layer左上角为原点(0.0),它的取值范围是0~1,它的默认在中间也就是(0.5,0.5)的位置...layer.bounds = CGRectMake(0, 0, 1, 80); //设置锚点为秒针的 x轴中心,y轴最右端,该锚点的位置是时钟图片的正中心 layer.anchorPoint...,所以我们我们需要设置一个定时器,在开始时每秒执行一次旋转布局绘制。

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

    IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

    UIView可以产生动画效果的变化包括: •位置变化:在屏幕上移动视图。 •大小变化:改变视图框架(frame)和边界。 •拉伸变化:改变视图内容的延展区域。...:self]; //设置动画曲线,控制动画速度 [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; //设置动画方式,并指出动画发生的位置...默认的值是CALayer类对象。 setAnimationBeginsFromCurrentState: 设置动画从当前状态开始播放。...讨论 如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作为开始状态。...setAnimationDelay: 在动画块中设置动画的延迟属性(以秒为单位) +(void)setAnimationDelay:(NSTimeInterval)delay 讨论 这个方法在动画块外调用无效

    1.5K10

    CALayer 图层概念二、CALayer属性二、方法

    ,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时, UIView内部会自动创建一个图层 (即CALayer对象), 通过UIView的layer属性即可访问这个图层....当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView得显示.换句话说,UIView...属性 设置图层的尺寸,高度和宽度 @property CGRect bounds; 设置位置 方式1: 用来设置CALayer在父层中的位置,position相当于UIView控件的center属性...UIView 默认情况下禁止了 layer 动画,但是在 animation block 中又重新启用了它们 (1)bounds : 用于设置CALayer的宽度和高度,修改这个属性会产生缩放动画...layer中移除 anim1.fillMode = kCAFillModeForwards; 方法二:layer的真实位置就是当前的位置 (该方法可以让layer和View层一起过去) // 为animation

    1.4K70

    iOS 页面渲染 - UIView & CALayer

    前言 Hi Coder,我是 CoderStar!...尽管两种情况中都有 layer,但是当 layer 附加在 view 上时,它的默认的隐式动画的 layer 行为就不起作用了,那不显示动画的原因是什么呢?...顺便提一下,iOS 和 macOS 两个系统的参考坐标系不一致,对于 iOS 来说原点默认在视图的左上角位置,往右为 X 正方向,往下是 Y 正方向;而对于 macOS 来说原点默认是在视图的左下角位置...修改 bounds 更改 bounds 的位置,也就是 origin 属性,对于当前视图没有影响,相当于更改了当前视图的坐标系,对于子视图来说当前视图的左上角已经不再是 (0,0), 而是改变后的坐标,...同时这也解释了为什么通过 AutoLayout 设置约束后修改 frame 属性来改变位置和尺寸不会起作用的原因。

    1.9K20

    iOS-核心动画详解之CALayer

    CALayer简介: CALayer我们又称为层,在每个UIView内部都有一个layer的属性,UIView之所以能够显示,就是因为它里面有layer层,才具有显示的功能,我们通过操作CALayer...操作layer改变UIView外观. 2.1 设置阴影 //默认图层是有阴影的, 只不过是透明的。...当需要做一些快速缩放,平移,二维的旋转时用KVC....>这两个属性是配合使用的. position:它是用来设置当前的layer在父控件当中的位置的.所以它的坐标原点.以父控件的左上角为(0.0)点. anchorPoint:它是决点CALayer身上哪一个点会在...position属性所指的位置 anchorPoint是以当前的layer左上角为原点(0.0),它的取值范围是0~1,默认位置在中间也就是(0.5,0.5). anchorPoint又称锚点.就是把锚点定到

    2K60

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

    在调用didFinishLaunchingWithOptions:方法之前,会加载storyboard,在加载的时候创建一个window,接下来会创建箭头所指向的控制器,把该控制器设置为UIWindow...在该方法中,会创建一个Window,然后创建一个控制器,并把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。...默认的值是CALayer类对象。 setAnimationBeginsFromCurrentState:     设置动画从当前状态开始播放。...讨论         如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作 为开始状态。...        在自定义子View中使用layoutSubviews时应注意,[super layoutSubviews];最好放在方法默认最后执行,不然IOS7下面可能引起挂机。

    70430

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

    我们只能通过子类继承父类,重写子类方法的方式处理UIView的触摸事件(注意:我说的是UIView触摸事件而不是说的 UIViewController的触摸事件)。...、时间、阶段 当手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指在的触摸位置 当手指离开屏幕时,系统会销毁相应的UITouch对象 提 示:iPhone开发中,要避免使用双击事件...*)view; // 返回值表示触摸在view上的位置 // 这里返回的位置是针对view的坐标系的(以view的左上角为原点(0, 0)) // 调用时传入的view参数为nil的话,返回的是触摸点在...alpha:0.0~0.01为透明。 注 意:默认UIImageView不能接受触摸事件,因为不允许交互,即userInteractionEnabled = NO。...注意:如果设置父控件的透明度或者hidden,会直接影响到子控件的透明度和hidden。如果父控件的透明度为0或者hidden = YES,那么子控件也是不可见的! 3.3.

    11.4K70

    iOS动画-CALayer布局属性详解

    Animatable. */ @property CGPoint anchorPoint; 我们可以看出,position被用于描述当前layer在superlayer中的位置,而且是通过当前layer...换句话来讲就是:position是当前layer的anchorPoint在superLayer中的位置。...我们也可以更确切理解为:position是相对于superLayer来讲,而anchorPoint是相对于当前layer来讲;只不过在默认情况下,anchorPoint与position是重合的;锚点是用单位坐标来描述的...,尤其是我们在做旋转动画时,可能会需要设置此属性来决定图层是围绕哪一个点旋转的;但这时候我们又不得不考虑一个问题:修改锚点可以让我们的动画围绕非中心点旋转,但是这也改变了原有视图的位置frame,这是我们不想要的结果...参考organView为坐标系时,purpleView上坐标为target的点的坐标值;

    2.3K20

    详解CALayer的anchorPoint和position

    CALayer CALayer属于QuartzCore框架,用于在iOS和Mac OS系统上可见元素的绘制,和属于UIKit框架的UIView的关系是,UIView默认会创建一个CALayer属性...和position共同决定图层相对父图层的位置,即frame的x,y 在图层旋转时的固定点 锚点使用单位坐标来描述,范围为左上角{0, 0}到右下角{1, 1},默认坐标是{0.5, 0.5}....可以理解为: 当你设置图层的frame属性的时候,position点的位置(也就是position坐标)根据锚点(anchorPoint)的值来确定,而当你设置图层的position属性的时候,bounds...frame属性,当前默认的锚点是秒针图片的中心位置,{0.5, 0.5},如图 锚点位置 所以如果不改变锚点,设置一个定时器: self.timer = [NSTimer scheduledTimerWithTimeInterval...anchorPoint、position、frame anchorPoint的默认值为(0.5,0.5),也就是anchorPoint默认在layer的中心点。

    1.1K30

    【iOS 开发】从 setNeedsLayout 说起

    Drawing Cycle Apple 官方文档已经明确说明,开发者不应该直接调用 layoutSubviews 与 drawRect: ,而应该在你认为系统默认的布局和重绘不能带给你想要的效果时...---- 如何善用 View Drawing Cycle 一个很常见的例子是,一个 iPad App,横屏和竖屏时界面布局不一样,那么你可以监听设备旋转,在设备旋转时执行 setNeedsLayout... 方法,然后在 layoutSubviews 里面通过判断接下来是横屏还是竖屏来进行不一样的布局设置。...我在 drawRect: 方法里实现了 lineView 的具体绘制方法(根据两个点来绘制)。...那么如果我想要这个直线一直根据两个点同步变化的话,就需要在 dotView 的位置发生改变时,执行: lineView.setNeedsDisplay() // 重绘 lineView

    71610

    iOS动画系列之一:带时分秒指针的时钟动画(上)1. 最终实现的效果以及思维导图2. CALayer3. 隐式动画

    UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain)...CALayer *layer; 当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView...(0, 0, 100, 100); // 再设置位置(默认情况下 position 指的是 center。)...m34的默认值是0,可以通过设置m34为-1.0 / d来应用透视效果 d代表了想象中视角相机和屏幕之间的距离,以像素为单位,那应该如何计算这个距离呢?实际上并不需要,大概估算一个就好了。”...position相当于UIView 的center position决定了layer在父上的位置。

    2.1K30

    简单放置一张图片,实现放大缩小旋转效果1 image和imageView的区别2 创建控件显示到view上的标准步骤3 CGRectOffset函数的含义4 小飞机-监听四个按钮的点击事件(代码)5

    设置内容....的类型 bounds 默认的原点是 0,0 通过bounds修改大小时中心点不动 小结: center只能修改位置,bounds只能修改大小,frame既能修改位置也能修改大小* 9 transform...进行旋转(旋转) CGAffineTransformMakeRotation(**旋转的弧度**); CGAffineTransformRotate(**在某个transform的基础上-一般为自身**...bounds的x,y 会影响子控件的显示位置 12 头尾式动画(了解) //- 准备开始动画 [UIView beginAnimations:nil context:nil]; //- 设置时间 [UIView...sizeToFit] 15 控制位置添加view //- 在siblingSubview下面添加view -(void)insertSubview:(UIView *)view belowSubview

    1.1K30

    iOS 系统中的视图动画

    iOS 系统中的视图动画 动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。...哪些属性可以添加动画效果 根据 iOS 视图编程指南中说明, UIView 内置支持为下列属性添加动画效果: Frame 可以改变视图相对于上一级视图的位置和大小。..., 可以再开始另外一个动画代码段, 而不必等当前动画完成, 嵌套的动画会同时开始运行, 默认继承原来动画的延时、 时间长度、 加速曲线等, 不过这些选项也能被覆盖。...实现动画的自动翻转 当创建自动翻转指定次数的动画时, 考虑将重复次数设置为非整数值。...修改子视图 可以修改子视图的可见性用来表示当前视图的不同的状态, 看下面的两个视图切换的例子,在 iOS 4.0 之前, 需要将视图切换动画添加到 Begin/Commit 动画之间, 代码如下: 在

    2.2K30

    iOS从Xib中设置样式

    添加AutoLayout边距约束时如何不使用margin约束 通常我习惯于在xib或者StoryBoard中用右键drag拖线的方式设置autolayout约束,但是默认的autolayout边距约束可能是带...而经过我的测试发现在Xcode6.1和Xcode6.4下这个margin可能表现行为还不一样。 为了避免麻烦,还是不用margin约束比较好,如何在添加约束时不使用margin约束呢?...快速在文件树中切换到当前文件 在Xcode中经常会遇到跳转比较多的情形,有时候若跳转到某个m文件,然后又想在左边的文件目录中切换选中文件为当前打开的文件,可以用Cmd + Shift + J来操作 显示或隐藏...command + control + ⬆ 或command + control + ⬇会帮我搞定一切. view位置 添加约束的时候,谁说控件A要放在控件B的下侧才能设置到A到B在y轴方向上的距离?...Xcode 6以上支持一种新的方法,特好用 其实就是为UIView添加扩展 或 继承 添加IBInspectable的属性 既可以图形化设置某些属性 这样在右侧的第四个选项卡中神奇的出现了自定义的设置项

    2.4K20

    iOS基础动画教程

    这个方法可以包含一个代码块,里面设置要改变的东西,在执行的时候iOS会自动以动画的形式展现出来,代码如下: [UIView animateWithDuration:1 animations:^{...:1 animations:^{ // 透明度变为0.1 self.blueSquare.alpha = 0.1; }]; 方块原来就有透明度,当然默认为1,通过这个设置...就跟改变位置,位置还是原来的位置时,也不会动一样。那怎么办呢。另外,这里的旋转都是一次性的,如果想要一直转,怎么做呢,是不是很容易想到循环?...,第二个为旋转的角度 }completion:^(BOOL finished){// 结束时继续执行 [self spin]; }]; } 这里我们把动画放到一个函数里,...以上就是基本的iOS UIView动画了,单个看各自都挺简单的,在我们的真实使用当中,当然也要注意结合使用,发挥想象力,简单的功能也是可以组合出帅气的效果的~ 可以在github下载我的示例工程:https

    74630
    领券