gpt4 book ai didi

objective-c - CoreAnimation,在 iOS 5 Xcode 4 中移动带有动画阴影的 UIImageView

转载 作者:可可西里 更新时间:2023-11-01 05:06:46 26 4
gpt4 key购买 nike

我正在尝试为图像添加一个(假的)3d 效果(UIImageView 从点 A 移动到 B,在此移动过程中,我希望在点 C=(A+B)/2 处具有最大的阴影大小(或更大的阴影偏移量),所以看起来它又在上下移动。当我什至尝试更改阴影大小时,它都没有动画。你能帮我如何编辑这段代码吗:

NSValue *pointB = [NSValue valueWithCGPoint:CGPointMake(CGRectGetMinX(imageView.frame)+50, CGRectGetMinY(imageView.frame)+50)];
[self.view bringSubviewToFront:ImageView];
[UIView beginAnimations:@"UIImage Move" context:NULL];
CGPoint point = [pointB CGPointValue];
CGSize size =imageView.frame.size;
[UIView setAnimationDuration:1.0];
imageView.frame = CGRectMake(point.x, point.y, size.width, size.height);
imageView.layer.shadowOffset = CGSizeMake(0, 4); //actually I want this to happen in mid point and revert to offset 1
[UIView commitAnimations];


//sorry for possible problems with syntax, the code works fine, I had to rewrite and simplify it for understanding

最佳答案

您需要使用 CAAnimation 为图层的 shadowOffset 设置动画。下面是一个关于如何在移动对象时放大 shadowOffset 的示例。此示例使用 UIButton。

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface ViewController : UIViewController
@property (nonatomic, retain) IBOutlet UIButton *button;
@end

在 M 文件中,我从按钮 IBAction 调用按钮上的动画。

-(IBAction)shadowGrow:(id)sender {
CABasicAnimation *shadowGrow = [CABasicAnimation animationWithKeyPath:@"shadowRadius" ];
shadowGrow.delegate = self;
[shadowGrow setFromValue:[NSNumber numberWithFloat:3.0]];
[shadowGrow setToValue:[NSNumber numberWithFloat:20.0]];
[shadowGrow setDuration:1.0f];
shadowGrow.autoreverses = YES;

CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"transform.translation.x" ];
move.delegate = self;
[move setFromValue:[NSNumber numberWithFloat:0]];
[move setToValue:[NSNumber numberWithFloat:50]];
[move setDuration:1.0f];
move.autoreverses = YES;

//Add animation to a specific element's layer. Must be called after the element is displayed.
[[button layer] addAnimation:shadowGrow forKey:@"shadowRadius"];
[[button layer] addAnimation:move forKey:@"transform.translation.x"];
}

使用 CoreAnimation 需要记住的一件事是,当像这样为属性设置动画时,除非您在动画结束后在 CAAnimation 的委托(delegate)方法中设置这些值,否则它们将从一开始就恢复为它们的值。

- (void) animationDidStop:(NSString *)theAnimation finished:(NSNumber *)finished context:(void *)context

这里是一些关于 CALayer 的动画属性的附加信息。

CALayer and CIFilter animatable properties

关于objective-c - CoreAnimation,在 iOS 5 Xcode 4 中移动带有动画阴影的 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com