2012-10-17 43 views
10

Tôi có một ViewController với một loạt các UIImageViews mà tôi cần phải gửi đến mặt trước và tạo ảnh động đến trung tâm của khung nhìn.iOS bringSubviewToFront chặn hoạt ảnh UIView

Tôi đã cố gắng gọi bringSubviewToFront trước khi truyền hoạt ảnh UIView và những gì dường như đang xảy ra là chế độ xem được gửi lên đầu ngăn xếp, nhưng hoạt ảnh không xảy ra (mặc dù nhật ký xử lý hoàn thành hiển thị như thể hoạt ảnh DID xảy ra).

Lần thứ hai tôi nhấn nút kích hoạt các hình ảnh động (xem xét rằng thời gian này xem đã ở chỉ số hàng đầu, các hình ảnh động diễn ra như mong muốn)

Heres mã của tôi:

- (void)beginAnimationWithSelectedCountry:(UIView *)countryView 
{ 
    if (!countryView) return; 

    [self.view bringSubviewToFront:countryView]; 
    [UIView animateWithDuration:0.6f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
     countryView.center = CGPointMake(self.view.center.x, self.view.center.y); 
    } completion:^(BOOL finished) { 
     NSLog(@"Animation complete"); 
    }]; 
} 

Bất kỳ suy nghĩ nào? Tôi đã ở đây trong nhiều giờ>. <

Cảm ơn

EDIT: Nếu tôi nhận xét ra bringSubviewToFront mã thực hiện một cách hoàn hảo với hình ảnh động (trừ các quan điểm đang được một số quan điểm khác) vì vậy tôi Preety chắc chắn vấn đề là với các dòng:

[self.view bringSubviewToFront:countryView]; 

Heres một ảnh chụp màn hình của những gì tôi hiện có mà có thể làm sáng tỏ thêm về vấn đề này: http://d.pr/i/PKoa

+0

Tôi sẽ bắt đầu với câu lệnh if-return đó và xem liệu phương pháp của bạn có còn được gọi là lần đầu tiên xung quanh với NSLog hay không. – CodaFi

+0

Đã được kiểm tra, vì tôi đã đăng nhật ký "Hoạt ảnh hoàn tất" đang được gọi cả hai lần. Cảm ơn mặc dù –

+1

làm điều này - đặt các hình ảnh động trong một phương pháp thứ hai được gọi là animateCountry đặt mã hoạt hình trong nó - trong phương thức bắt đầu gọi bringSubViewToFront - sau đó gọi [self performSelector: animateCountry ... nó sẽ hoạt động. –

Trả lời

0

Hãy thử thêm 0.123.vào các tùy chọn. Tôi gần như chắc chắn đây là một trường hợp của tùy chọn này, nhưng chơi với các tùy chọn khác nếu không. Bạn cũng có thể thử lên lịch một khối để thực hiện hoạt ảnh của bạn trên runloop tiếp theo, đó là một phước lành, tôi đã tìm thấy, với hình động.

3

Khi bạn gọi

[self.view bringSubviewToFront:countryView]; 

bạn kích hoạt một sự kiện quan điểm bố trí mới. Bạn có thể kiểm tra điều này bằng cách đặt một điểm ngắt trong 'viewDidLayoutSubviews' trên bộ điều khiển của bạn.

Tôi gặp sự cố tương tự: mã của riêng tôi trong phương thức 'viewDidLayoutSubviews' đã hủy hoạt ảnh của tôi bằng cách đặt lại khung của đối tượng mà tôi đang cố tạo hoạt ảnh.

+2

Hi Barry, cảm ơn đã cho chúng tôi biết những gì đã gây ra nó thất bại. Bạn có biết về vấn đề này không? –

6

Gọi:

[self.view layoutSubviews];

Ngay sau:

[self.view bringSubviewToFront:countryView];

Nó sẽ giải quyết vấn đề của bạn.

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