2010-03-17 31 views
5

Tôi muốn "Kéo" UIView sang bên phải, có nghĩa là tăng frame.size.width của nó lên foo pixel và đồng thời giảm nó là frame.origin.x bởi foo pixel, sử dụng cú pháp [UIView beginAnimations]. Tuy nhiên, nếu tôi làm điều đó, khi hoạt ảnh bắt đầu, chế độ xem sẽ thay đổi kích thước ngay lập tức và sau đó bắt đầu hoạt ảnh cho nguồn gốc.Hoạt ảnh thay đổi kích cỡ và di chuyển UIView cùng lúc

CGRect currFrame = someView.frame; 
currFrame.size.width += 100; 
currFrame.origin.x -= 100; 

[UIView beginAnimations:@"Anim1" context:nil]; 
someView.frame = currFrame; 
[UIView setAnimationDuration:0.7]; 
[UIView commitAnimations]; 

Tôi cũng đã cố gắng phá vỡ hoạt ảnh xuống 2 phần nhưng sau đó tôi không thể giữ đúng vị trí.

Bất kỳ trợ giúp nào được đánh giá cao!

+0

Có bạn tìm thấy bất kỳ giải pháp chưa? Tôi bị ấn tượng với cùng một vấn đề, tuy nhiên, điều lạ lùng là tại sao khung nhìn ngay lập tức thay đổi kích thước và sau đó bắt đầu hoạt ảnh? –

Trả lời

4

Bạn có thể cần phải thả xuống Core Animation và phá vỡ thành hai hình ảnh động rõ ràng:

CABasicAnimation *stetchAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"]; 
stetchAnimation.toValue = [NSNumber numberWithDouble:(someView.frame.size.width+100)/someView.frame.size.width]; 

CABasicAnimation *slideAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
slideAnimation.toValue = [NSNumber numberWithDouble:-100]; 

CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 
animationGroup.animations = [NSArray arrayWithObjects:stetchAnimation,slideAnimation,nil]; 
animationGroup.removedOnCompletion = NO; 
animationGroup.fillMode = kCAFillModeForwards; 
animationGroup.duration = 0.7; 

[someView.layer addAnimation:animationGroup forKey:@"animations"]; 
+0

Cảm ơn, nhưng điều đó kéo dài tầm nhìn. Những gì tôi cần là thay đổi khung hình, vì vậy nó có thể chuyển tiếp các phần phụ của nó cho phù hợp. Về cơ bản, nó giống như hành vi của trường tìm kiếm trong Mobile Safari (khi bạn nhấn vào nó, nó mở rộng sang bên trái). –

Các vấn đề liên quan