2011-12-30 36 views
13

Tôi không thể tạo hiệu ứng chế độ xem được định hình làm mũi tên và tôi muốn nó hoạt hình từ trái sang phải, trái sang phải và ...Chế độ xem hoạt ảnh khối UIView di chuyển sang trái sang phải và quay lại trái

Đoạn mã dưới đây không hoạt động, tôi đoán tôi cần một đường dẫn, nhưng không biết cách thực hiện điều đó trong hoạt ảnh khối UIView.

[UIView animateWithDuration:.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{ 
    controller.view.frame = frame1; 
    controller.view.frame = frame2; 

} completion:^(BOOL finished) { 

}]; 

Trả lời

33

Bạn có thể sử dụng tùy chọn UIViewAnimationOptionAutoreverse, hãy thử đoạn code dưới đây:

UIView * testView = [[UIView alloc] initWithFrame:CGRectMake(20.0f, 100.0f, 300.0f, 200.0f)]; 
[testView setBackgroundColor:[UIColor blueColor]]; 
[self.view addSubview:testView]; 

[UIView animateWithDuration:0.3f 
         delay:0.0f 
        options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse 
       animations:^{ 
        [testView setFrame:CGRectMake(0.0f, 100.0f, 300.0f, 200.0f)]; 
       } 
       completion:nil]; 

[testView release]; 

Nó sẽ lặp lại di chuyển từ phải sang trái, sang trái sang phải, ... thuận lợi.

+0

hoạt ảnh của bạn hoạt động tốt khi 'TestView' được thêm vào' ViewController' ... nhưng không được thêm vào khi 'được thêm vào' Chế độ xem khác '..if plz có thể giúp ... http: //stackoverflow.com/questions/16148239/animating-subviews-left-right-left – Subbu

+0

Xin chào @CodeJack, nó hoạt động ngay cả trên Chế độ xem khác, những gì bạn phải sửa đổi là chỉ để thay thế '[self.view addSubview: testView];' thành '[self addSubview: testView];'. Đó là tất cả. Tôi đã thử nghiệm nó & nó hoạt động hoàn hảo. ;) – Kjuly

+0

@Kjuly UIView của tôi có ba UIButton. Nút này không xóa trong khi xem động. Nó vẫn còn đó. Cách di chuyển tất cả chế độ xem con trong khi UIView animate – Thangavel

0

Giả sử rằng frame1 là vị trí bắt đầu và frame2 là vị trí cuối cùng trước khi lặp lại.

Vấn đề là hoạt ảnh được tính toán ở cuối vòng lặp do đó, frame1 bị bỏ qua và chế độ xem chỉ đơn giản là được chuyển đến frame2. Nếu bạn di chuyển thiết lập của frame1 bên ngoài khối thì nó sẽ hoạt động tốt. Nếu bạn muốn hoạt ảnh phát lại và chuyển tiếp, bạn sẽ cần phải thực hiện nó autoreverse với UIViewAnimationOptionAutoreverse

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