ios 怎么让position不变 只是宽度在变。

浏览:69日期:2023-11-16

问题描述

CABasicAnimation *leftboundsanimation = [CABasicAnimation animationWithKeyPath:@'bounds.size.width']; leftboundsanimation.fromValue = [NSNumber numberWithFloat:1]; //[NSValue valueWithCGSize:CGSizeMake(1, 20)]; leftboundsanimation.toValue = [NSNumber numberWithFloat:animationrectwidth/2-0.5];

//[NSValue valueWithCGSize:CGSizeMake(animationrectwidth/2-0.5, 20)];

leftboundsanimation.removedOnCompletion = NO; leftboundsanimation.fillMode = kCAFillModeForwards; leftboundsanimation.duration = 1.3; leftboundsanimation.beginTime = 2.7;

问题解答

回答1:

CABasicAnimation version:

How to change the width of a CALayer with animation from left to right?

CGRect bounds = self.view.bounds;CALayer *layer = self.view.layer;layer.position = CGPointMake(0, 0);layer.anchorPoint = CGPointMake(0, 0);CABasicAnimation *leftBoundsAnimation = [CABasicAnimation animationWithKeyPath:@'bounds'];leftBoundsAnimation.duration = 1.3;leftBoundsAnimation.toValue = [NSValue valueWithCGRect:bounds];bounds.size.width = 0;leftBoundsAnimation.fromValue = [NSValue valueWithCGRect:bounds];[layer addAnimation:leftBoundsAnimation forKey:@'leftBoundsAnimation'];

UIView其实有直接提供动画方法的。改变一个view的宽度:

CGRect frame = self.view.frame;frame.size.width = 300;[UIView animateWithDuration:1.3 animations:^{ self.view.frame = frame;}];

相关文章: