在ios動畫期間[UIView animatWithDuration...]
如何在動畫期間截取動畫值?ios截取動畫值
這裏是我目前(不工作)解決方案:
#import "FooterSelectionView.h"
#import <QuartzCore/QuartzCore.h>
@implementation FooterSelectionView
@synthesize displayLink;
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code
selector = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"selector.png"]];
[self addSubview:selector];
[self setSelectorFrame:CGRectMake(700, 0, selector.frame.size.width, selector.frame.size.height)];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
UIImage *bg = [UIImage imageNamed:@"overlayArea.png"];
[bg drawInRect:CGRectMake(0, 0, 957, 127) blendMode:kCGBlendModeNormal alpha:1];
[selector.image drawInRect:selector.frame blendMode:kCGBlendModeOverlay alpha:1];
}
-(void)step {
[self setNeedsDisplay];
NSLog(@"%@", @"step");
}
- (void)setSelectorFrame:(CGRect)frame {
displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(step)];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[UIView animateWithDuration:5 animations:^{
selector.frame = frame;
//self.alpha = 0
} completion:^(BOOL finished){
[self setNeedsDisplay];
[self.displayLink invalidate];
self.displayLink = nil;
NSLog(@"%@", @"stop");
}];
}
@end
我看到實際圖像視圖的舉動,但「繪製」版本覆蓋物僅立即轉到目標值。我希望能夠告訴「繪製」版本去實際選擇器視圖的任何位置。我怎樣才能做到這一點?
編輯
當我NSLog
的selector.frame.origin.x
我注意到,該值始終0
。我可以看到選擇器是屏幕上的動畫,那麼給出了什麼?
我正在處理'Overlay'混合模式。混合模式必須具有正確混合的背景。如果我在不同的視圖中執行選擇器圖像,那麼混合模式根本不起作用(這就是混合模式,因爲我相信你知道)。所以我試圖設法讓他們進入同一個UIObject,但只是讓選擇器移動的外觀。這是一個棘手的業務:( – Jacksonkr 2012-02-06 20:00:25
僅供參考,我只是在ipad上運行這個,因爲我爲覆蓋動畫做了這麼小的一部分,所以它運行在全幀。謝謝你真棒的答案,你肯定是SOF的ios q &a。 – Jacksonkr 2012-02-06 20:18:26
+1僅用於'view.layer.presentationLayer.frame'部分,非常有用 – 2013-10-30 03:17:17