我试着做以下的事情 -
我有两个版本相同的形象,一个彩色和一个黑色和白色。 我想在B&W为“向上滑动”露出其下的一个。
我尝试设置高度和框架,但不能得到它的工作就像我希望它。
例如,这将是既UIImages其中一个是揭示另一方面,在不移动的组合:
有任何想法吗? :)
我试着做以下的事情 -
我有两个版本相同的形象,一个彩色和一个黑色和白色。 我想在B&W为“向上滑动”露出其下的一个。
我尝试设置高度和框架,但不能得到它的工作就像我希望它。
例如,这将是既UIImages其中一个是揭示另一方面,在不移动的组合:
有任何想法吗? :)
行,这里是使用灰色视图的掩模的不同方法。 其实我有一个蓝景和greyView,其中灰色覆盖了蓝色的测试这一点。 把灰色层上形成掩模层,以使灰层是可见的。 现在动画掩模从灰层远,使得灰层消失而不移动它,蓝色显示直通其中灰色消失。
如果你想用这个实验,在Xcode中创建一个空的项目,单一视图,并把这段代码里面viewDidLoad中。 这就是我测试了。
self.view.backgroundColor = [UIColor whiteColor];
UIView* blueView = [[[UIView alloc] init] autorelease];
blueView.backgroundColor = [UIColor blueColor];
blueView.frame = CGRectMake(50,50,100,100);
UIView* grayView = [[[UIView alloc] init] autorelease];
grayView.backgroundColor = [UIColor grayColor];
grayView.frame = CGRectMake(50,50,100,100);
[self.view addSubview:blueView];
[self.view addSubview:grayView]; // gray covers the blue
// Create a mask to allow the grey view to be visible and cover up the blue view
CALayer* mask = [CALayer layer];
mask.contentsScale = grayView.layer.contentsScale; // handle retina scaling
mask.frame = grayView.layer.bounds;
mask.backgroundColor = [UIColor blackColor].CGColor;
grayView.layer.mask = mask;
// Animate the position of the mask off the grey view, as the grey becomes unmasked,
// that part of the grey "dissappears" and is no longer covering the blue underneath
CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"position"];
a.duration = 4;
a.fromValue = [NSValue valueWithCGPoint:mask.position];
CGPoint newPosition = mask.position;
newPosition.y += mask.bounds.size.height;
a.toValue = [NSValue valueWithCGPoint:newPosition];
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[mask addAnimation:a forKey:@"colorize"]; // animate presentation
mask.position = newPosition; // update actual position
不要忘了这条线在与#imports顶:
#import <QuartzCore/QuartzCore.h>
一种方法是堆叠的UIView的,使得在彩色图像,其中,所述彩色图像完全由B&W图像覆盖(隐藏)的顶部上的B&W的图像。
[self.view insertSubview:bwImage aboveSubview:colorImage];
只有B&W的观点是可见的。 现在设置在B&W视图clipsToBounds:
bwImage.clipsToBounds = YES;
最后动画在bwImage的边界的高度使得它的高度缩小到0,剪取B&W图像,揭示其背后的彩色图像。 事情是这样的:
[UIView animateWithDuration:1.0 animations:^{
CGRect b = bwImage.bounds;
b.size.height = 0;
bwImage.bounds = b;
}];
我还没有试过,但希望你的想法。