Core Animation实战四(视觉效果),阿里面试会问什么

  • 图层蒙版

//

// MaskLayerViewController.m

// LayerStudyDemo

//

// Created by apple on 2017/9/27.

// Copyright © 2017年 ZY. All rights reserved.

//

#import “MaskLayerViewController.h”

@interface MaskLayerViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *maskImage;

@end

@implementation MaskLayerViewController

  • (void)viewDidLoad {

[super viewDidLoad];

[self maskView];

}

//maskLayer

-(void)maskView{

CALayer * maskLayer = [CALayer layer];

maskLayer.frame = self.maskImage.bounds;

UIImage * image = [UIImage imageNamed:@“time.png”];

maskLayer.contents = (__bridge id _Nullable)(image.CGImage);

self.maskImage.layer.mask = maskLayer;

}

  • (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

  • 拉伸过滤

放大和缩小过滤的算法属性

/* The filter types to use when rendering the `contents’ property of

* the layer. The minification filter is used when to reduce the size

* of image data, the magnification filter to increase the size of

* image data. Currently the allowed values are `nearest’ and `linear’.

* Both properties default to `linear’. */

@property(copy) NSString *minificationFilter;

@property(copy) NSString *magnificationFilter;

/* The bias factor added when determining which levels of detail to use

* when minifying using trilinear filtering. The default value is 0.

* Animatable. */

@property float minificationFilterBias;

算法如下

/** Contents filter names. **/

CA_EXTERN NSString * const kCAFilterNearest

CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);

CA_EXTERN NSString * const kCAFilterLinear

CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);

/* Trilinear minification filter. Enables mipmap generation. Some

* renderers may ignore this, or impose additional restrictions, such

* as source images requiring power-of-two dimensions. */

CA_EXTERN NSString * const kCAFilterTrilinear

CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);

默认的过滤器都是kCAFilterLinear,这个过滤器采用双线性滤波算法,它在大多数情况下都表现良好。双线性滤波算法通过对多个像素取样最终生成新的值,得到一个平滑的表现不错的拉伸。但是当放大倍数比较大的时候图片就模糊不清了。

kCAFilterTrilinear和kCAFilterLinear非常相似,大部分情况下二者都看不出来有什么差别。但是,较双线性滤波算法而言,三线性滤波算法存储了多个大小情况下的图片(也叫多重贴图),并三维取样,同时结合大图和小图的存储进而得到最后的结果

kCAFilterNearest是一种比较武断的方法。从名字不难看出,这个算法(也叫最近过滤)就是取样最近的单像素点而不管其他的颜色。这样做非常快,也不会使图片模糊。但是,最明显的效果就是,会使得压缩图片更糟,图片放大之后也显得块状或是马赛克严重。

DEMO如下:

//

// TensileFilterViewController.m

// LayerStudyDemo

//

// Created by apple on 2017/9/28.

// Copyright © 2017年 ZY. All rights reserved.

//

#import “TensileFilterViewController.h”

@interface TensileFilterViewController ()

@property (strong, nonatomic) IBOutletCollection(UIView) NSArray *LedViews1;

@property (strong, nonatomic) IBOutletCollection(UIView) NSArray *LedView2;

@property (nonatomic, weak) NSTimer *timer;

@end

@implementation TensileFilterViewController

{

NSArray * array;

}

  • (void)viewDidLoad {

[super viewDidLoad];

array = @[self.LedViews1,self.LedView2];

UIImage *digits = [UIImage imageNamed:@“led.png”];

for (int i=0; i<array.count; i++) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

自学几个月前端,为什么感觉什么都没学到??


这种现象在很多的初学者和自学前端的同学中是比较的常见的。

因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。

最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。

很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。

这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。

但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

握一点基础的东西。分享给你一份前端分析路线,你可以参考。

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-T6wnQzot-1712651751297)]

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值