UICoreAnimation(2):Calayer…

本文介绍了如何在CALayer内部绘图及实现动画效果。通过设置代理方法可以在CALayer上绘制图形,并利用CALayer的某些属性实现默认的动画效果。文章还详细解释了在CALayer与UIView交互时需要注意的问题。
(1)在calayer内部绘图需要遵循这个layer的代理方法:myLayer.delegare = self;//这个mylayer是在父视图中创建的,你要直接在父视图里面给mylayer上面显示东西,就需要前面的代理方法了。
那么前面的为什么不需要呢,因为他是在创建这个layer,而不是去他的内部干什么.所以不需要。

//self.view.layer.delegate = self.view;不能这样,或者myLayer.delegare = self.view;因为每个view当中都有一个自己的layer来显示界面,第一个的话是给这个父视图的layer复写

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {

}这个方法,做的图是直接在父视图上面显示的,而后面的那个则是不对的,新建的layer的代理=父视图的view是不对的,而如果在父视图中想要复写这个方法的话是需要调用 [self.view.layer setneeddisplay],这个是界面刷新。
如果在创建了一个子类view,则在[self.view addsubview:]的时候调用了一次[self.view.layersetneeddisplay].

  //UIKit提供的方法在此协议中无效,为了避免CoreAniamtion跨平台的框架和UIKit相应的方法耦合在一起

//    [[UIColor blueColor] setFill];

//    UIRectFill(CGRectMake(50, 50, 100, 100));

    

    //CGAPI

    CGContextAddRect(ctx, CGRectMake(50, 50, 100, 100));

    CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);

    

    CGContextDrawPath(ctx, kCGPathStroke);

这句话的意思是在复写drawlayer的时候不能用uikit的方法引文Uikit只能在ios中使用,而core animation则是一个c接口,都能用,你不能有一个小得那个类的方法,去给大得那个类定义,定义成功了,这个大的类也无法给其他小类使用了。

还有你每次新建一个view的时候,他自己默认了一个协议self.view.delegate = self.view;

如果你想子类化drawrect就是调用- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {

    

    NSLog(@"%p", ctx);

    

    [super drawLayer:layer inContext:ctx];//这个方法是下面这个方法的复写,写了这个下面这个就不调用了

    

}

- (void)drawRect:(CGRect)rect {


//    NSLog(@"%@", self);

//    NSLog(@"%@", self.layer.delegate);

    

    

    CGContextRef context = UIGraphicsGetCurrentContext();

    

     NSLog(@"%p", context);//这个方法是父类的方法,如果没有方法重写,则调用此方法进行画图。

    

}

rootLayer的某一些属性默认带隐式动画效果,时长为1/4s,下面的方法都是自己新建的layer自带的动画效果

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

    

    UITouch *touch = [touches anyObject];

    

    CGPoint p = [touch locationInView:self.view];

    

    myLayer.position = p;

    

    NSInteger size = arc4random_uniform(50) + 50;

    

    myLayer.bounds = CGRectMake(0, 0, size, size);

    

    myLayer.backgroundColor = [UIColor greenColor].CGColor;

    

    myLayer.cornerRadius = arc4random_uniform(20);//这个显示界面得角度

    

    myLayer.opacity = arc4random_uniform(10)/10.0;//这个显示界面得透明度

    

    

    //其他的可以通过commed点进去查看

    

}



在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值