当前位置: 首页 > news >正文

php做的网站出现404今天头条新闻100条

php做的网站出现404,今天头条新闻100条,crm客户管理系统页面,武汉英奇展示设计工程有限公司今天说一下UIView 与 CALayer 一、UIView 和 CALayer 的关系 在 iOS 开发中,UIView 是用户界面的基础,它负责处理用户交互和绘制内容,而 CALayer 是 UIView 内部用于显示内容的核心图层(Layer)。每个 UIView 内部都有…

今天说一下UIView 与 CALayer

一、UIView 和 CALayer 的关系

在 iOS 开发中,UIView 是用户界面的基础,它负责处理用户交互绘制内容,而 CALayerUIView 内部用于显示内容的核心图层(Layer)。每个 UIView 内部都有一个 CALayer 实例,负责管理其外观。

  • UIView 负责:

    • 事件响应(如触摸事件)
    • 视图管理(如添加子视图、布局)
    • 交互动画
  • CALayer 负责:

    • 处理底层的图像绘制
    • 提供丰富的视觉效果(如阴影、圆角、边框)
    • 高效的图形渲染和动画性能优化

UIView 本质上是 CALayer封装,它提供了更高级的接口,使开发者能够方便地管理 UI 组件,而 CALayer 提供了更强大的低级绘制能力。

二、UIView 和 CALayer 的主要区别

特性UIViewCALayer
作用处理用户交互、管理子视图负责显示内容、绘制图像
事件处理能响应触摸事件不能直接响应事件
层级关系可以添加子视图 (addSubview:)只能添加子层 (addSublayer:)
动画支持UIView AnimationCore Animation(更底层,更高效)
内容渲染依赖于 CALayer直接渲染像素
性能较高(封装较多)更高效(直接操作 GPU)
阴影、圆角部分支持,但性能较低直接支持,性能更高

三、CALayer 的常见功能

CALayer 主要用于控制视图的视觉效果,包括阴影、圆角、边框、渐变、3D 变换等。以下是 CALayer 的一些常见属性和用法:

1. 圆角 (cornerRadius)

CALayer 提供 cornerRadius 属性,用于设置圆角:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
view.backgroundColor = [UIColor blueColor];
view.layer.cornerRadius = 20;
view.layer.masksToBounds = YES;
  • cornerRadiusCALayer 变得更圆滑。
  • masksToBounds = YES 确保子视图不会超出 cornerRadius 限制。

⚠️ 注意masksToBounds = YES 会裁剪子视图,但同时也会影响阴影效果,导致 shadow 无法生效。

2. 阴影 (shadow)

CALayer 允许为视图添加阴影效果:

view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOffset = CGSizeMake(3, 3);
view.layer.shadowOpacity = 0.5;
view.layer.shadowRadius = 5;
  • shadowColor:阴影颜色
  • shadowOffset:阴影偏移量
  • shadowOpacity:阴影透明度
  • shadowRadius:阴影模糊半径

注意: masksToBounds = YES 会裁剪阴影,导致阴影不可见。如果要同时使用 cornerRadiusshadow,可以使用 UIViewshadowPath

view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:20].CGPath;

这样可以手动设置阴影路径,避免 masksToBounds 影响阴影显示。

3. 边框 (border)

CALayer 提供 borderWidthborderColor 让视图添加边框,太常用,也没啥注意的,不举例子了

4. 透明度 (opacity)

CALayer 允许控制透明度:

view.layer.opacity = 0.5; // 0.0 完全透明,1.0 不透明

UIViewalpha 类似,但 opacity 只作用于 CALayer,不会影响 UIView 的交互事件。

5. 变换 (transform)

CALayer 提供 transform 属性支持 3D 变换:

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view1.backgroundColor = UIColor.redColor;
[self.view addSubview:view1];CATransform3D rotate = CATransform3DMakeRotation(M_PI / 4, 0, 0, 1);
view1.layer.transform = rotate;

以上就实现了旋转45度(π/4),还可以可以实现缩放、平移等复杂动画,可自己试试。

6. 透明背景 (backgroundColor)

CALayer 允许直接设置 backgroundColor

view.layer.backgroundColor = [UIColor greenColor].CGColor;

此代码实际效果和view.backgroundColor = UIColor.greenColor是一样的,UIViewbackgroundColor 其实是封装的 CALayerbackgroundColor

7. 渐变色 (CAGradientLayer)

使用 CAGradientLayer 可以实现渐变背景:

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = view.bounds;
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1, 1);
[view.layer addSublayer:gradientLayer];
8. 组动画 (CAAnimationGroup)

CALayer 的动画比 UIViewanimation 更强大,例如:

CABasicAnimation *scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scale.fromValue = @1.0;
scale.toValue = @1.5;
scale.duration = 0.5;CABasicAnimation *fade = [CABasicAnimation animationWithKeyPath:@"opacity"];
fade.fromValue = @1.0;
fade.toValue = @0.5;
fade.duration = 0.5;CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[scale, fade];
group.duration = 0.5;[view.layer addAnimation:group forKey:@"groupAnimation"];

这样可以同时实现缩放+透明度变化。

四、总结

方面UIViewCALayer
作用处理用户交互,管理子视图负责绘制内容、动画、阴影、渐变等
事件响应能处理触摸事件不能直接处理触摸事件
动画UIView.animateWithDurationCore Animation(更高效)
视觉特效部分支持(圆角、阴影)更强大(渐变、3D 变换、阴影优化)
  • UIView 是更高层的 UI 组件,适用于普通 UI 开发
  • CALayer 提供更低级的图形绘制功能,适用于高性能动画、渐变、阴影等优化

如果你需要更复杂的 UI 效果(如渐变、动画、3D 变换等),可以直接操作 CALayer 来优化性能!

http://www.hkea.cn/news/94789/

相关文章:

  • 查看网站源代码建站可以牛排seo系统
  • 政府网站建设的基本原则百度网盘电脑版
  • 张家港网站建设福州百度快速优化
  • 兼职做网站编辑百度搜索推广开户
  • 谁告诉你j2ee是做网站的宁波网站推广找哪家公司
  • 谷歌外贸建站多少钱搭建网站教程
  • 赚钱靠普的网站关键字搜索软件
  • 建设银行深分行圳招聘网站做游戏推广一个月能拿多少钱
  • 北京网站建设及推广招聘关键词排名代做
  • 对网站建设的意见建议网络营销推广的方法有哪些
  • 爬虫网站怎么做怎样才能在百度上面做广告宣传
  • 网站页码南昌做seo的公司有哪些
  • 网络设计方案包括哪些深圳百度推广seo公司
  • 亚马逊跨境电商开店站长工具seo综合查询5g
  • 网站怎么做百度快照logo百度快照优化推广
  • 山西网站建设排名seo技术培训山东
  • 日韩系成人影片成首选网站如何优化推广
  • 网站到期续费通知搜索风云排行榜
  • 网站公司说我们做的网站服务器不够用哪个杭州seo好
  • 类似淘宝网站建设费用杭州哪家seo公司好
  • 装修网站怎样做seo专员很难吗
  • 无锡网站外包如何接广告赚钱
  • 英文网站制作 官网淘宝标题优化网站
  • 电力建设网站网络推广网站的方法
  • 如何做网站窗口网站优化网络推广seo
  • 营销型网站建设效果网络营销策划推广方案
  • 专业的网站搭建多少钱网站seo优化价格
  • 广州公司网站设计制作win10优化大师官网
  • 做调查哪个网站比较可靠百度指数查询
  • 怎么在建设厅网站报名广州网站优化服务