Core Animation实战四(视觉效果),web前端面试问题和答案解析

文章详细介绍了在iOS开发中如何使用CALayer实现阴影效果、圆角和蒙版层,包括设置圆角弧度、裁剪、边框、阴影透明度、颜色和路径。同时还提到了Web前端开发的学习资源,提供了一份全面的学习资料指南。
摘要由CSDN通过智能技术生成

这篇主要说阴影圆角边框,先看一下Demo效果:

DEMO例子:

//

// VisualEffectViewController.m

// LayerStudyDemo

//

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

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

//

#import “VisualEffectViewController.h”

@interface VisualEffectViewController ()

@property (weak, nonatomic) IBOutlet UIView *View1;

@property (strong, nonatomic) IBOutlet UIView *View2;

@property (weak, nonatomic) IBOutlet UIView *shadowView;

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

@end

@implementation VisualEffectViewController

  • (void)viewDidLoad {

[super viewDidLoad];

[self layerCornerRadiusAndWidth];

[self shadowEffect];

[self shadowPath];

}

//layer的圆角,裁剪,边框。

-(void)layerCornerRadiusAndWidth{

//圆角弧度

self.View1.layer.cornerRadius = 30;

//是否边框外绘制

self.View1.layer.masksToBounds = YES;

//边框颜色

self.View1.layer.borderColor = [UIColor blackColor].CGColor;

//边框宽度

self.View1.layer.borderWidth = 3;

}

//阴影效果

-(void)shadowEffect{

//阴影透明度

self.shadowView.layer.shadowOpacity = 0.8;

//阴影颜色

self.shadowView.layer.shadowColor = [self getColorFromRed:0 Green:1 Blue:0 Alpha:1];

// shadowOffset属性控制着阴影的方向和距离。它是一个CGSize的值,宽度控制这阴影横向的位移,高度控制着纵向的位移。

self.shadowView.layer.shadowOffset = CGSizeMake(1, 1);

//shadowRadius属性控制着阴影的模糊度,当它的值是0的时候,阴影就和视图一样有一个非常确定的边界线。当值越来越大的时候,边界线看上去就会越来越模糊和自然。苹果自家的应用设计更偏向于自然的阴影,所以一个非零值再合适不过了。

self.shadowView.layer.shadowRadius = 100;

}

//CGColorRef

-(CGColorRef) getColorFromRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha

{

// RGBA 色彩 (显示3色)

CGColorSpaceRef rgbSapceRef = CGColorSpaceCreateDeviceRGB();// RGB 色彩空间

CGFloat rgbComponents[] = {red, green, blue, 1};// RGBA 颜色组件

CGColorRef rgbColorRef = CGColorCreate(rgbSapceRef, rgbComponents);// 一般创建 CGColor

return rgbColorRef;

}

//阴影路径

-(void)shadowPath{

self.timeImage.layer.shadowOpacity = 0.5;

//create a square shadow

// CGMutablePathRef squarePath = CGPathCreateMutable();

// CGPathAddRect(squarePath, NULL, self.timeImage.bounds);

// self.timeImage.layer.shadowPath = squarePath;

// CGPathRelease(squarePath);

//create a circular shadow

CGMutablePathRef circlePath = CGPathCreateMutable();

CGPathAddEllipseInRect(circlePath, NULL, self.timeImage.bounds);

self.timeImage.layer.shadowPath = circlePath;

CGPathRelease(circlePath);

}

  • (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

  • 图层蒙版

//

// 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’. */

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

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

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

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

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

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

分享

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

链图片转存中…(img-3gWUtrUL-1712700380917)]

分享

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值