Core Animation实战三(图层几何学)

这篇具有很好参考价值的文章主要介绍了Core Animation实战三(图层几何学)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

//

// ClockViewController.m

// LayerStudyDemo

//

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

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

//

#import “ClockViewController.h”

@interface ClockViewController ()

@property (weak, nonatomic) IBOutlet UILabel *hourLabel;

@property (weak, nonatomic) IBOutlet UILabel *minuteLabel;

@property (weak, nonatomic) IBOutlet UILabel *secondLabel;

@property (nonatomic, weak) NSTimer *timer;

@end

@implementation ClockViewController

  • (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view from its nib.

self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(showTime) userInfo:nil repeats:YES];

}

-(void)showTime{

NSCalendar * calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierChinese];

NSUInteger units = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *components = [calendar components:units fromDate:[NSDate date]];

CGFloat hoursAngle = (components.hour / 12.0) * M_PI * 2.0;

//calculate hour hand angle //calculate minute hand angle

CGFloat minsAngle = (components.minute / 60.0) * M_PI * 2.0;

//calculate second hand angle

CGFloat secsAngle = (components.second / 60.0) * M_PI * 2.0;

//设置锚点

self.hourLabel.layer.anchorPoint =self.minuteLabel.layer.anchorPoint =self.secondLabel.layer.anchorPoint = CGPointMake(0.5f, 0.9f);

//rotate hands

self.hourLabel.transform = CGAffineTransformMakeRotation(hoursAngle);

self.minuteLabel.transform = CGAffineTransformMakeRotation(minsAngle);

self.secondLabel.transform = CGAffineTransformMakeRotation(secsAngle);

}

  • (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end

  • 坐标系和Hit Testing

CALayer 并不关心任何响应链事件,所以不能直接处理触摸事件或者手势。但是它有一系列的方法帮你处理事件: -containsPoint:-hitTest:

-containsPoint:接受一个在本图层坐标系下的CGPoint,如果这个点在图层frame范围内就返回YES

-hitTest:方法同样接受一个CGPoint类型参数,而不是BOOL类型,它返回图层本身,或者包含这个坐标点的叶子节点图层。这意味着不再需要像使用-containsPoint:那样,人工地在每个子图层变换或者测试点击的坐标。如果这个点在最外面图层的范围之外,则返回nil。

//

// HitTestingViewController.m

// LayerStudyDemo

//

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

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

//

#import “HitTestingViewController.h”

@interface HitTestingViewController ()

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

@property (nonatomic, strong) CALayer *innerLayer;

@end

@implementation HitTestingViewController

  • (void)viewDidLoad {

[super viewDidLoad];

[self creatInnerLayer];

}

-(void)creatInnerLayer{

self.innerLayer = [CALayer layer];

self.innerLayer.frame = CGRectMake((self.wildView.frame.size.width-100)/2, (self.wildView.frame.size.height-100)/2, 100.0f, 100.0f);

self.innerLayer.backgroundColor = [UIColor blueColor].CGColor;

//add it to our view

[self.wildView.layer addSublayer:self.innerLayer];

}

// containsPoint 判断较麻烦,需要把坐标转换图层成每个坐标系下的坐标

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

CGPoint point = [[touches anyObject] locationInView:self.view];

//将点击的点从以 self.view.layer 为父类的坐标系转到self.wildView.layer为父类的坐标系

point = [self.wildView.layer convertPoint:point fromLayer:self.view.layer];

if ([self.wildView.layer containsPoint:point]) {

//convert point to blueLayer’s coordinates

point = [self.innerLayer convertPoint:point fromLayer:self.wildView.layer];

if ([self.innerLayer containsPoint:point]) {

[[[UIAlertView alloc] initWithTitle:@“Inside innerLayer Layer”

message:nil

delegate:nil

cancelButtonTitle:@“OK”

otherButtonTitles:nil] show];

} else {

[[[UIAlertView alloc] initWithTitle:@“Inside wildView Layer”

message:nil

delegate:nil

cancelButtonTitle:@“OK”

otherButtonTitles:nil] show];

}

}

}

//-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

//

// CGPoint point = [[touches anyObject] locationInView:self.view];

// //返回点击layer

// CALayer * hitLayer = [self.wildView.layer hitTest:point];

// if (hitLayer==self.innerLayer) {

//

// [[[UIAlertView alloc] initWithTitle:@“Inside innerLayer Layer”

// message:nil

// delegate:nil

// cancelButtonTitle:@“OK”

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

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

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

Core Animation实战三(图层几何学),程序员,几何学

Core Animation实战三(图层几何学),程序员,几何学

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

Core Animation实战三(图层几何学),程序员,几何学

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

Core Animation实战三(图层几何学),程序员,几何学

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里即可获取!!!

Core Animation实战三(图层几何学),程序员,几何学
最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里即可获取!!!

[外链图片转存中…(img-Ud4Up8aA-1711653321451)]文章来源地址https://www.toymoban.com/news/detail-848703.html

到了这里,关于Core Animation实战三(图层几何学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

    本文仅供学习使用 本文参考: 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 连杆机构中的连杆与连架杆构成运动副,该运动副元素的 特征点 或 特征线 在 机架坐标系 中的 运动轨迹曲线或曲面 称为 约束曲线 或 约束曲面 ,是联系刚体运动与机构

    2024年02月11日
    浏览(51)
  • CGAL的三角网格曲面脊线和脐点的近似计算(需要微分几何学的知识)

             脊线(Ridges) :在光滑曲面上,脊线是一种特殊的曲线。沿着这条曲线,曲面的一个主曲率在其曲率线上达到极值(最大或最小)。这意味着脊线是那些曲率发生突变的区域,它们在形状感知、物体识别和计算机图形学中都有重要的应用。         脐点(U

    2024年02月03日
    浏览(45)
  • 【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第2章 - 人体几何学测量与仿真建模

    第1章 回到目录 第3章 人体测量学 (anthropometry) 是人类学的一个分支学科,旨在通过对人体整体和局部测量,探讨人体的类型、特征、变异和发展规律。人体几何仿真建模是通过数字化技术构建数字化的人体模型,数字化的人体模型能够精确地再现人体复杂的三维结构,其应用

    2024年02月10日
    浏览(44)
  • Openlayers实战:列表与图层双向信息提示

    在Openlayers的实际项目中,经常会在左侧列出信息列表,右边的地图上显示的是对应的图层内容,两边是一一对应的,为了看出来选择的是哪一个,就需要两边互相提示,本示例就很好的展示了这种效果,具体的方法请参考源代码。

    2024年02月13日
    浏览(40)
  • OpenLayers实战,WebGL图层鼠标经过要素高亮显示,根据变量自动修改WebGL图层要素的透明度、大小和颜色

    专栏目录: OpenLayers实战进阶专栏目录 本章讲解OpenLayers使用WebGL图层情况下,鼠标经过要素高亮显示,根据变量自动修改WebGL图层要素的透明度、大小和颜色的功能。 webgl图层的样式并不像普通矢量图层直接修改或者切换样式就可以的,而是要预先通过webgl的运算符编写特定规

    2024年02月04日
    浏览(81)
  • Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。

    在以往的项目维护中,出现一个问题,使用最新高清底图发现, 设置地图最大等级(21级)之后 ,地图虽然可以渲染 21 级图层, 但是并没有请求 21 级图层瓦片数据 。 思考之后,认为是地图等级参数限制,经过调试发现问题所在不仅于此,后来解决问题,这里记录一下。

    2024年02月12日
    浏览(39)
  • flutter开发实战-Stagger Animation实现水波纹动画

    flutter开发实战-实现水波纹动画,使用到了交织动画,实现三个圆逐渐放大与渐变的过程。 实现水波纹动画,使用到了交织动画,实现三个圆逐渐放大与渐变的过程。 交织动画 有些时候我们可能会需要一些复杂的动画,这些动画可能由一个动画序列或重叠的动画组成。一个

    2024年02月15日
    浏览(43)
  • 以 LLM 为核心 LLM@Core:程序员的大语言模型技术指南

    过去几个月里,我们对于大语言模型的一系列探索,如 ChatGPT 端到端实践与应用开发、LLaMA 与 ChatGLM 的微调试验、GitHub Copilot 逆向工程分析、动态上下文工程(即 LangChain)的研究,驱使着我去写一个总结,也是一个面向程序员的 LLM 指南。 也是好久没有写这个系列(程序员必

    2024年02月07日
    浏览(51)
  • python图像处理实战(三)—图像几何变换

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 前言       图像几何变换就是在不改变图像像素值的前提

    2024年02月11日
    浏览(58)
  • python图像处理实战(二)—图像几何变换

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 前言       图像几何变换就是在不改变图像像素值的前提

    2024年02月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包