首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Pop–实现任意iOS对象的任意属性的动态变化

    :@"myKey"]; if (anim) { /* 更新toValue为一个新值. */ anim.toValue = @(42.0); } else { /* 创建并开始一个新的动画....*/ .... } 上面的例子是以图层为例.Pop是以NSObject的扩展方式实现的.也就是说: 任何NSObject及其子类都可以通过Pop添加动画效果....弹性动画 弹性动画,可以给对象一个有活力的弹跳效果.下面的例子中,我们使用弹性动画来使图层的边框值从它的当前值变化为(0, 0 ,400, 400): POPSpringAnimation *anim...动画属性 动画属性由POPAnimatableProperty类管理,用来指定在哪个属性上应用动画效果.在下面的例子中,我们创建了一个弹性动画,并且显示设置动画属性为与-[CALayer bounds]...prop.readBlock = ^(id obj, CGFloat values[]) { values[0] = [obj volume]; }; // 设置动画属性的值.

    1.2K70

    绘图-CAShapeLayer、CABasicAnimation以及核心动画

    removedOnCompletion -> 是否让图层保持显示动画执行后的状态,默认为YES,也就是动画执行完毕后从涂层上移除,恢复到执行前的状态,如果设置为NO,并且设置fillMode为kCAFillModeForwards...,那么动画就会从fromValue过渡到toValue; 如果同时设置了fromValue和byValue,那么动画就会从fromValue过渡到fromValue + byValue;...如果同时设置了byValue 和toValue,那么动画就会从toValue - byValue过渡到toValue; 如果只设置了fromValue,那么动画就会从fromValue...过渡到当前的value; 如果只设置了toValue ,那么动画就会从当前的value过渡到toValue; 如果只设置了byValue ,那么动画就会从从当前的...在这个动画里,是设置了要旋转到的弧度,根据以上规则,动画将会从它当前的弧度专旋转到我设置的弧度.

    2.9K30

    Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    为 UICollectionView 添加 Supplementary View 首先看下效果图: 具体代码逻辑如下,注释已经在代码中添加: // // BaseAPIViewController.swift..., cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell...如果你的产品经理给你提了一个需求,要求你要为 UICollectionView 的 section 设置背景, 但当你查阅文档的时候,你就会发现 UICollectionView 是无法通过属性设置来为...section 设置不同的背景颜色的。...,这里就用到了另外一个知识点:手势 UIGestureRecognizer 手势拖拽 在 iOS9 之后,UICollectionView 的属性自带重新排序的效果,这里不得不提 Apple 为 UICollectionView

    2.2K10

    Swift 自定义布局实现瀑布流视图

    查阅苹果的文档可以得知,UICollectionView 的布局是抽象类 UICollectionViewLayout 的子类,它定义了 UICollectionView 中每个 item 的布局属性叫做...由于我们瀑布流视图的每个 Cell 的高度是动态的,为了实现这个需求,我们可以声明一个 protocol 并提供一个返回动态高度的方法,来为每个 Cell 提供动态的高度,代码如下: protocol...这里我的策略就是通过追踪计算每一列的高度值来得出最小高度的那一列,由于已知当前有最小高度的那一列的高度值以及索引值,那我们就可以为一个 Cell 计算得出它新的 X 坐标 和 Y 坐标,然后重新对该 Cell 的位置信息赋值,最后再更新一下每列的高度,直到为每一个..., cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell...工程中编译并运行,你就会看到 Cell 根据照片的高度正确放置并设置了大小: 好了, 利用 UICollectionView 控件与自定义布局实现瀑布流的内容到此就结束了,最后附上项目的源码地址

    2.6K30

    iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

    layout布局类     UICollectionViewFlowLayout * layout = [[UICollectionViewFlowLayout alloc]init];     //设置布局方向为垂直流布局...    layout.scrollDirection = UICollectionViewScrollDirectionVertical;     //设置每个item的大小为100*100     ... NS_AVAILABLE_IOS(6_0); 我们可以分析:因为UICollectionView是iOS6.0之前的新类,因此这里统一了从复用池中获取cell的方法,没有再提供可以返回nil的方式,并且在...UICollectionView的回调代理中,只能使用从复用池中获取cell的方式进行cell的返回,其他方式会崩溃,例如: //这是正确的方法 -(UICollectionViewCell *)collectionView...//layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; 这样系统会在一行充满后进行第二行的排列,如果设置为水平布局,

    3.1K20

    iOS动画三板斧(二)--CoreAnimation动画介绍使用附加

    1.CABasicAnimation CABasicAnimation动画主要是设置某个动画属性的初始值fromValue和结束值toValue,来产生动画效果。...fillMode 是个枚举值(四种),当removedOnCompletion设置为NO之后才会起作用。可以设置layer是保持动画开始前的状态还是动画结束后的状态,或是其他的。...(包括CAAnimationGroup),需要注意的是animations里的动画设置了duration之后动画可能会有不同,一般里面不设置,在最外层设置group的duration即可。...示例代码可能与gif图不太一致,因为gif图是从其他demo中录制下来的。...有三种方式:1、直接使用UIBezierPath的方法;2、使用CoreGraphics绘制;3、利用CAShapeLayer绘制。 示例代码如下,绘制一个右侧为弧型的视图: ?

    1.2K40

    iOS Core Animation的用法

    一般来说,layer可以有两种用途,二者不互相冲突:一是对view相关属性的设置,包括圆角、阴影、边框等参数;二是实现对view的动画操控。...Autoreverses 当你设定这个属性为 true 时,在它到达目的地之后,动画的返回到开始的值,代替了直接跳转到 开始的值。...RemovedOnCompletion 这个属性默认为 true,那意味着,在指定的时间段完成后,动画就自动的从层上移除了。这个一般不用。假如你想要再次用这个动画时,你需要设定这个属性为 false。...这样的话,下次你在通过-set 方法设定动画的属 性时,它将再次使用你的动画,而非默认的动画。 Speed 默认的值为 1.0.这意味着动画播放按照默认的速度。...如果你改变这个值为 2.0,动画会用 2 倍的速度播放。 这样的影响就是使持续时间减半。如果你指定的持续时间为 6 秒,速度为 2.0,动画就会播放 3 秒钟。

    1.4K30

    Swift动画 —— 进度条

    在viewDidLoad中将shapeLayer的.strokeEnd 设为0 shapeLayer.strokeEnd = 0 之后在handleTap中为shapeLayer添加动画。...这里有个问题就是开始的位置应该是圆的上方而不是右边,这里就需要去修改shapeLayer的transform,这样就会从圆的上方开始动画了。...这个就在刚才URLSession的代理方法里面设置strokeEnd的地方设置percentageLabel的text就好了。 这里注意设置text也需要在主线程里面。...let pulsatingLayer = CAShapeLayer() 在viewDidLoad中设置好属性并添加为view的layer的sublayer pulsatingLayer.path =...在方法里为pulsatingLayer添加一个放大1.5倍。 时间为1秒的动画,并将其autoreverses设为true,这样放大后会自动缩放到原来的大小,最后将重复次数设为无限大。

    2.8K10
    领券