前言 iOS 精致的app,离不开酷炫合宜的动画。而iOS中的动画实现也有多种不同的方式。今天就来介绍一下iOS中的动画。...本篇是第一篇,就讲一下最简单的动画实现方式,初学动画,简单的动画一般都是用这种方式来实现的。 UIView 动画 UIView动画就是利用UIView的API来实现动画效果。...而利用UIView API也可以分为两种,一种block形式,一种多API组合。 一、block形式的UIView 动画 常用的block UIView 动画方法有如下几个: ?...animatable property.png 二、一般形式的UIView动画 先介绍常用的API: ?...API介绍.png 上图中的API没有截完整,还有几个设置动画参数的方法,大家可以去探索一下。
Linear 运行最开始的登录动画,放慢模拟器的动画速度,你会看到默认情况下使用的EaseInOut参数使得密码框在接近结束点的时候出现了明显的减速动画。...系列方法相比多了一个UIView类型的参数,这个参数接收的对象作为动画的作用者。...这段代码是我以前做的一个翻卡匹配的小游戏,点击之后的动画效果如下: ? 翻卡匹配小游戏 在模拟器下使用command+T放慢了动画的速度之后,我截取了翻转的四张图片: ?...本文作为动画篇的第一篇博客,目的是为了从最简单的UIView动画讲起,慢慢的拓展其它的动画,也希望能起到抛砖引玉的作用。...在文章的最后,如果你是iOS动画的初学者,请尝试结合上面提到的知识,为本文最开始的登录demo中添加代码,让按钮从下方渐变显示弹出: ? 弹出的登录按钮 最后的最后,吐槽一下gitcafe。
iOS动画开发之三——UIView的转场切换 前两篇博客中,我们分别介绍了UIView动画的两种使用方式,分别为,带block的方式:http://my.oschina.net/u/2340880...通过UIView动画的类方法,我们可以十分方便的使View某些属性改变的同时拥有动画效果。这篇博客主要讨论View切换的动画操作。 ...void (^)(void))animations completion:(void (^)(BOOL finished))completion; 通过这个方法,我们可以重绘View视图,任何其子视图的改变或者其自身的改变都会触发转场动画的效果...+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration...通过使用上述两个方法,你会发现某些效果会非常突兀,比如想要改变视图的颜色,它会在转场动画播放完成后,颜色突然的变化,要改善这一效果,我们需要设置options参数包含:UIViewAnimationOptionAllowAnimatedContent
控件 : 1.创建 UIView 控件 : 使用 UIView 的 alloc init 方法 , 创建 UIView 控件 ; //1....UIView 控件放在该 容器 中 ; 3.添加按钮 : 添加两个按钮 , 两个按钮的功能分别是 生成 UIView 控件 和 清空 UIView 控件 ; ---- ( 3 ) 在 ViewController.m...几行 文字 , Lines 属性 设置 0 就会自动进行换行 ; 2.UILabel 行高设置 : 自动换行的前提是 , UILabel 有对应的多行的行高 , 如果 UILabel 高度很小只能显示...1 行 , 那么 UILabel 自动换行 也只是显示 1 行 , 因此 如果需要自动换行的话 , 需要给 UILabel 设置足够的行高 ; 3.宽高控制 : UILabel 的 宽度 和 高度...) UIButton 的启用 禁用 : 1.enabled 属性 ( 可视化修改 ) : 在 UIButton 的 属性查看器中 Control 模块下 , Enabled 属性用来设置 按钮是否可用
用Masonry实现 UIView Animation 简单动画 其实只需要在mas_updateConstraints:设置完需要更新的layout之后调用父视图的layoutIfNeeded方法就行...@interface MOViewTestViewController () @property (nonatomic, strong) UIView *moView; @end @implementation...// 如果其约束还没有生成的时候需要动画的话,就需要先强制刷新后再写动画 // 否则还没生成约束就会直接跑动画,得不到想要的动画效果 // [self.moView.superview...layoutIfNeeded]; [UIView animateWithDuration:3 animations:^{ [self.moView mas_updateConstraints...(因为Resume里写了Masonry),在此记录一下~
NSNumber numberWithFloat: M_PI * 2.0 ]; rotationAnimation.duration = 1; // 切换界面保证动画不停止
)direction 方法中,先添加一下代码 UILabel *auxLabel = [[UILabel alloc] initWithFrame:label.frame]; auxLabel.text...变换方法比较简单,难的主要是里面的逻辑 10.27 添加新功能:关键帧动画 之前的文章说过UIView.animate这个方法,把多个动画链接在一起,可能你会想到在这方法里面嵌套多个这个方法,达到多个动画链接...但是这样复杂一点的动画,你会崩溃。。 所以我们可以将整个动画分成几个不同的阶段,或者关键帧,然后将单个的关键帧组合成一个关键帧动画。...关键帧动画 - (void)planeDepart { CGPoint originalCenter = self.planeImage.center; [UIView animateKeyframesWithDuration...,指定时间和持续时间是相对于关键帧动画的整个时间的,例如,0.1是10%,0.25是25%,而1.0是整个持续时间的100%。
前言: 系统自带的alertView界面有点呆板,动画有点单一,总之随着业务的发展,系统自带的alertView已经很难满足我们的需求,那自定义的就很有必要。...var alertContentLabel: UILabel! var button: UIButton! var backImageView: UIView!...方法中添加的backImageView背景蒙版 2、获取当前主窗口,并定义一个alertView的frame 3、利用UIView.animate对alertView进行动画操作。...注意:angle值为M_1_PI / 1.5,只是个参考,您可以换其他的值,试试效果 4、完成动画后,调用父类的removeFromSuperview移除alertView 四、实现alertView...里的,实现了坠落动画效果。
在了解UIView block动画实现原理之前,需要先了解CALayer的可动画属性。 1....理解完这些,我们再来分析UIView的block动画就容易理解了。 2. UIView的block动画 Amazing things happen when they are in a block....所以UIView可以相当灵活的控制动画的产生。...当我们对UIView的一个属性赋值的时候,它只是简单的调用了它持有的那个CALayer的对应的属性的setter方法而已,根据上面的可动画属性的特点,CALayer会让它的delegate(也就是这个UIView...实际上结果大家都应该能想得到:在UIView的动画block外面,UIView的这个方法将返回NSNull,而在block里面,UIView将返回一个正确的CAAction对象(这里将不深究UIView
[self.view addSubview:_noLabel]; //将弱引用参照的_noLabel添加到视图UIView;UIViewController.h-》@property(null_resettable..., nonatomic,strong) UIView *view;-》UIView.h :@property(nonatomic,readonly,copy) NSArrayUIView...*> *subviews;-》强引用UILabel对象,所以这个UILabel对象已经有拥有者,不会被放--再添加过程都是操作UILabel对象的地址 oc中释放对象的过程: 释放对象的过程: 程序先对控制器进行释放...此时如果UILabel对象没有被强引用,UILabel对象将被释放 。 1.2 属性的修饰 创建的自定义对象,都用strong。...即使你声明一个NSString的属性,有人可能传入一个NSMutableString的实例,然后在你没有注意的情况下修改它。 数字型的,比如int ,就是使用assign。
Animations - 封装了一下,使用的时候只要两行代码。一些动画的飞机稿,都是一些单独分离出来的用于测试的子动画,现在统一归类一下。...模糊效果 FXBlurView - 是一个UIView子类,支持iOS5.0以上版本,支持静态、动态模糊效果,继承与UIView的模糊特效。...TTTAttributedLabel - 一个文字视图开源组件,是UILabel的替代元件,可以以简单的方式展现渲染的属性字符串。...FXLabel - FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。...实用的标签文本小组件。 TextFieldEffects - 标准的UITextField有些枯燥么?来认识一下TextFieldEffects吧!
iOS动画开发之二——UIView动画执行的另一种方式 上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net.../u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法。 ...这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上。...使用begin和commit方式主要分为三个步骤: 一、设置动画开始 [UIView beginAnimations:@"test" context:nil]; 这个函数中的两个参数,第一个用于设置一个动画的标识... commitAnimations];//执行commit后,动画即开始执行 一点建议:这种创建UIView动画的方式和上一篇博客中的block方式效果相同,然而效率并不高,写的代码也会繁琐冗长,在开发中
,杀鸡焉用牛刀,那些大神封装的代码量太多了,出现了个bug自己改要看很久,太多时间浪费在这上面没有必要。...AlertAnimationTypeExpand, // 发散动画 AlertAnimationTypeFade, // 渐变动画 AlertAnimationTypeNone...:frame]; headerView.backgroundColor = [UIColor whiteColor]; UILabel *titleLabel = [UILabel...contentView.backgroundColor = [UIColor whiteColor]; UILabel *msgLabel = [UILabel new]; msgLabel.frame...Simulator Screen Shot - iPhone XR - 2019-01-16 at 14.07.28.png 这个只是满足基本需求,一般的项目也够用了。需要修改的自己扩展即可!
点开微信相册的时候,想要在相册图片界面跳转查看点赞和评论时,微信会采用界面翻转的过渡动画来跳转到评论界面,好像是在图片界面的背面一样,点击完成又会翻转回到图片界面,这不同于一般的导航界面滑动动画,觉得很有意思...,于是自己学着做了一下,其实也很简单,下面是实现的类似的效果图: 在图片界面点击右下角的查看评论会翻转到评论界面,评论界面点击左上角的返回按钮会反方向翻转回图片界面,真正的实现方法,与传统的导航栏过渡其实只有一行代码的区别...这里options的参数可以看出,动画是从右边开始翻转的,duration表示动画时间,很简单地就实现了翻转到评论界面。...的位置,这样就取代了原本的返回按钮了,然后在按钮点击响应中去设置翻转动画: // 返回上一页 - (void)back { // 设置翻转动画为从左边翻上来 [UIView transitionWithView...以上,就是该过渡动画的全部实现过程了,其实无非就是加了两行代码而已,非常简单,但是偶尔用一下,还是能带来非常好的效果的~ 这里有我的示例工程:https://github.com/Cloudox/ReverseDemo
layoutSubviews 5.旋转Screen会触发父UIView上的layoutSubviews事件 6.改变UIView大小的时候也会触发父UIView上的layoutSubviews事件 在苹果的官方文档中强调...假设有个UILabel 添加它距离左边的距离约束为left的constraint 值为 10 现在我们想让它距左边的距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...,只需要在动画里调用一次self.view.layoutIfNeeded(),所有的都会已动画的方式 。...如果一些变化不想动画 。在动画前执行self.view.layoutIfNeeded() drawRect 这个方法是用来重绘的。...drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。
Somo 同样是扩展UIView,添加属性somoContainer,表示占位视图的容器视图,其中每个占位区域都是一个SomoView。...特点 避免了上述自适应控件无数据时大小不正确的问题。 需要手工指定每个占位区域,且每个占位区域是UIView级别,不是CALayer。...TABAnimated 除此之外,TABAnimated也是一个被使用的比较多的,同样TABAnimated也是扩展的UIView。...//view动画类型枚举 { UILabel *lab = [[UILabel alloc]init]; [lab setFont:tab_kFont(15)];...,在等待页面加载渲染完成之后,在保留页面布局样式的前提下,通过对页面中元素进行删减或增添,对已有元素通过层叠样式进行覆盖,这样达到在不改变页面布局下,隐藏图片和文字,通过样式覆盖,使得其展示为灰色块。
2.1 API设计 UIView().attach($0) { UILabel().attach($0) .text("测试Label") UIButton().attach(...UIView |-- UILabel |-- UIButton 同时 View 之间没有相互联系,移植性高。 为什么不通过描述对象的方式来声明而采用直接使用 View 进行声明呢?...相比于用 UIView 直接声明结构的形式,View 的创建是非常重的,重复创建不现实。在UIView tree中,View是可变的,只需要把变化的操作放入动画 block 中即可由系统完成。...VBox().attach { UILabel().attach($0) } .animator(Animators.default) // 在布局重新计算子view时,根据动画对象进行 func...在声明式和响应式数据交互的加持下,我们可以通过响应数据的变化,把 TableView,CollectionView 的MVC设计模式,修改为响应式。
UIView 简介 : 1.定义 : iOS 手机屏幕上的所有能看到的内容都是 UIView 或 UIView 子类, 如 按钮 UIButton, 文字 UILabel 等都是继承自 UIView...UIView 中定义的, 而其他控件都是 UIView 的子类; ① 独有属性 : 有些属性是控件独有的, 如 UIProgressView 的 progress 属性代表其进度值, UILabel...: 头尾式动画用法 ① 开始动画 调用 UIView 的 beginAnimations:context 方法, ② 设置动画的各种属性, 如 设置动画过程 setAnimationDuration,...代码量过大, 用法比较少; //头尾式动画, 开始动画, 并设置动画的属性, 很少使用 [UIView beginAnimations:nil context:nil]; [UIView...头尾式动画, 开始动画, 并设置动画的属性, 很少使用 /* [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration
NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views; 有了Autolayout的UILabel...在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 ?...有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部不再会有空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration...//添加两个控件 UIView *blueView = [[UIView alloc] init]; blueView.backgroundColor = [UIColor
点击弹框的周围区域也可以关闭按钮。 点击上边的隐藏弹框也可以关闭按钮。 在实现功能的基础上,以动画的形式展示跟隐藏。 思路:在之前的开发中,我的思路比较局限。...UIScreen mainScreen].bounds.size.height @implementation ACErCodeView{ UIImageView *codeIMG; UILabel...*nickNameLabel; UILabel *sexLabel; UIButton *closeBtn; } -(instancetype)initWithFrame:(CGRect...view UIView *contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREENW-120,SCREENH-200...NSTextAlignmentCenter; [contentView addSubview:nickNameLabel]; //5.sex sexLabel = [[UILabel