大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

 iOS CoreAnimation核心动画总结

//是否在完成后移除(默认为true 动画完毕后从图层移除,恢复之前状态) open var isRemovedOnCompletion: Bool 子类CAPropertyAnimation属性动画也属于是抽象类。它的两个子类才能直接对层层进行动画操作,其中CABasicAnimation负责基础动画,CAKeyframeAnimation负责关键帧动画。 其中CAPropertyAnimation中的相关属性: //CALayer的属性名,根据相应属性名达到相应动画效果 open var keyPath: String?

iOS动画之CALayer、CoreAnimatioin

CALayer *layer = [[CALayer alloc] init]; } -(CAKeyframeAnimation *)keyAnimation{ CAKeyframeAnimation *keyAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; } @end 转场动画 下表列出了常用的转场类型(注意私有API是苹果官方没有公开的动画类型,但是目前通过仍然可以使用): 屏幕快照 2018-08-21 下午5.49.49.png #import "TransitionViewController.h" @interface TransitionViewController () @property (nonatomic,strong)UIImageView *imageView;

YYText使用篇(一)

// 2. 为文本设置属性 text.yy_font = [UIFont boldSystemFontOfSize:30]; @UITextViewDelegate - (void)textView:(YYTextView *)textView didTapHighlight:(YYTextHighlight *)highlight inRange:(NSRange)characterRange rect:(CGRect)rect { NSLog(@"tap text range:. YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:size text:text]; 9. 文本解析 // 1. 创建一个解析器 // 内置简单的表情解析 YYTextSimpleEmoticonParser *parser = [YYTextSimpleEmoticonParser new];

离屏渲染的基础知识整理

The layer’s alpha channel determines how much of the layer’s content and background shows through. Fully or partially opaque pixels allow the underlying content to show through but fully transparent pixels block that content. mask 也是一个 CALayer, mask 代表着怎么样的像素能够穿过 mask 被显示出来。你一定写过这样的代码。 imageView.image.layer.cornerRadius = 5;

优雅的实现CALayer的"AutoLayout"的两种方案

} - (void)layoutSubviews { [super layoutSubviews];CGColor, (id)[[UIColor alloc] initWithRed:33/255.0 green:94/255.0 blue:147/255.0 alpha:1]. method_exchangeImplementations(originalMethod, newMethod);self.layoutSubviewsCallback ? } - (void (^)(UIView *))layoutSubviewsCallback { return objc_getAssociatedObject(self, "layoutSubviewsCallback"); } @end 外部使用: CAGradientLayer *gradientLayer = [CAGradientLayer layer];

Texture的异步渲染和布局引擎

部分译文二(布局系统):https://juejin.im/post/5a1be41351882561a20a32e9#heading-17 即刻技术团队关于ASDK: 一、https://zhuanlan.zhihu.com/p/25371361 二、https://zhuanlan.zhihu.com/p/26283742 三、https://zhuanlan.zhihu.com/p/29537687 iOS 保持界面流畅的技巧:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ ASDK源码剖析:http://beelearning.cn/2017/11/ASDK/ 从 Auto Layout 的布局算法谈性能 :https://draveness.me/layout-performance

UI视图重点

}else{//此处判断不充分(即没有else)将会导致数据或子视图的混乱 cell.icon.hidden = NO; } [cell reloadWithModel:model];

iOS CALayer中position和anchorPoint关系正确解读

iOS CALayer中position和anchorPoint关系正确解读 前言 第一:本文揭示了决定CALayer 大小和位置的其实是它的属性bounds和position;CALayer的frame属性,实际上是从bounds和position属性中的值派生的,并且使用频率较低。也即frame的origin是通过position得到的,frame的size是通过bounds的size得到的。第二:anchorPoint和position根本不是一个点。并不是网上说的那样position是layer中的anchorPoint点在superLayer中

CALayer 及 CALayer 的 contents 系列属性

} return _redLayer; } 这样我们就在视图上添加了一个红色的 CALayer 了. 上边的代码有一点还需要说下: 与 UIView 不同, CALayer 的 backgroundColor 属性是 CGColorRef 类型, CGColorRef 指向 CGColor, 另外 CGColorRef 不属于 Cocoa 对象, 它是 Core Foundation 类型; UIImage *tempImage = [UIImage imageNamed:@"header"]; _imageLayer.contents = CFBridgingRelease(tempImage.CGImage); } return _imageLayer;

iOS 详解 CALayer 中的"模型层"和"展示层"

iOS 详解 CALayer 中的"模型层"和"展示层" 图层树的类型 layer tree 分为 model layer tree(模型图层树) 、presentation layer tree(表示图层树) 、render layer tree(渲染图层树) 图层树的结构 这三种图层树有什么作用呢?说到有啥作用,就不得不提Core Animation 核心动画了。因为这三个图层在核心动画中才能显示出它们的特点和用处。下面是官方文档

GPU vs CPU in iOS

GPU vs CPU in iOS 一直以来,我们做产品的时候并没有特别的去考虑CPU/GPU的使用,最近为了提升可视化功能的性能,发现合理使用GPU也是一个可以好好研究的部分,这里总结一下一些有用的信息。 中央处理器 CPU (Central Processing Unit) 是通用型处理器,可以用于处理任何计算,可称为软件层面计算;而图形处理器 GPU (Graphics Processing Unit) 是专用设计来处理图形图像,它基于硬件对高

Swift-CATransformLayer

Swift-CATransformLayer CATransformLayer用来创建真是的3D层次视图,而不是像其他的CALayer通过扁平的层次结果去渲染视图模型. CATransformLayer与CALayer对比.orange, zPosition: 60)) var perspective = CATransform3DIdentity perspective.m34 = -1 / 100 layer.transform = CATransform3DRotate(perspective, 0.1, 0, 1, 0) layer.backgroundColor = UIColor.gray.cgColor self.view.layer.addSublayer(layer) CALayer代码: let layer = CALayer() layer.addSublayer(layerOfColor(.

●测试题及讲解

} # 3.解析:便利构造器必须是类方法(+方法);而且必须手动释放内存 4、获取tableview正在window上显示的cell的indexPath方法是:答案:(B) A、- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;{ } B、- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; + ( LOSingleton *)sharedInstance{ @synchronized(self){ if (shareInstance == nil) { shareInstance = [[self alloc] init]; } B、static LOSingleton * shareInstance;

Core Animation: CALayer 及其隐式动画

可以给layer接受一个来自于 UIView 的绘制内容,我们也可以不实现这个方法,那么代理会继续调用下面的-(void)drawLayer:(CALayer)layer inContet:(CgContentRef)ctx; } @end 然后就像平常使用View一样使用它: - (void)viewDidLoad { [super viewDidLoad]; } 实现了隐式动画 隐式动画就介绍到这里,CALayer 还有很多其他有用的特性,有兴趣的同学可以多多挖掘。

iOS制作启动视频

AVPlayer *player = [[AVPlayer alloc] initWithURL:self.movieURL]; if (CGSizeEqualToSize(screenSize, imageSize) [dic[@"UILaunchImageOrientation"] isEqualToString:orientation]) { launchImageName = dic[@"UILaunchImageName"]; } 可以将该方法放在UIImage的分类中。具体的信息可以通过打印[[NSBundle mainBundle] infoDictionary]查看, 现在可以获取到启动图了,然后我们将该图片添加到控制器view中,作为背景即可 CALayer *backLayer = [CALayer layer];

Lottie 动画原理(OC版)

} //所有子Layer 信息 NSArray *layersJSON = jsonDictionary[@"layers"]; BOOL hidden = NO; //判断隐藏显示 if (_inFrame _outFrame) { hidden = (frame.floatValue _outFrame.floatValue);//需要变化位置的关键帧数组 @property (nonatomic, weak, nullable) LOTKeyframe *leadingKeyframe;//用于判断是否需要进行关键帧变化,如果当前帧候这个使用interpolator的控件不需要显示,则不需要进行更新 - (CGFloat)progressForFrame:(NSNumber *)frame;

雷达图绘制引发内存的思考

雷达图绘制引发内存的思考 近段一个新的需求是要做一个雷达图用来展示数据,下图为两种方式绘制的雷达图以及内存使用情况: drawRect方式绘制的雷达图.png CAShapeLayer方式绘制的雷达图. 如果雷达视图实现了这个方法,就可以拿到layer来直接设置contents寄宿图,如果这个方法没有实现,支持图层CALayer会尝试调用: - (void)displayLayer:(CALayer *)layer;

动画-复制层(CAReplicatorLayer)

//创建音量震动动画 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; animation.toValue = @0; } 源码地址 例子2 复制层动画综合应用 需求分析: 先画图。也就是添加一个滑动手势并监听它。然后强制绘图(self setNeedsDisplay) 添加一个 layer 到 self.layer 上 改变当前 view 的 layer 类型。 + (Class)layerClass{ return [CAReplicatorLayer class]; @property (nonatomic, weak) CALayer *dotLayer;

iOS图层(CALayer)几何学 锚点—闹钟实现

/** 表盘 */ @property (weak, nonatomic) IBOutlet UIView *orangeView; 效果如何: 设置锚点后效果图 现在要实现的就是如何让钟表跑起来,这里我们用NSTimer来更新钟表。 - (void)viewDidLoad { [super viewDidLoad]; //调整三个指针的锚点 self.hourImage.layer.anchorPoint = CGPointMake(0.5f, 0.9f); self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerTick) userInfo:nil repeats:YES];

IOS 面试问题

[number[j+1] integerValue]) { //根据比升序排序 NSInteger temp = [number[j] integerValue]; //将string转化成对象 number[j+1] = [NSString stringWithFormat:@"]",temp];