Hành động thực tế đang được thực hiện trong đoạn mã đó là khá đáng kể. Hoạt ảnh đang chuyển từ chế độ xem này sang chế độ xem khác - lần đầu tiên được thay thế và sau đó một boolean được đặt để theo dõi xem hiện tượng nào được hiển thị. Boolean được đặt trong khối hoàn thành.
[UIView transitionFromView:(displayingPrimary ? primaryView : secondaryView)
toView:(displayingPrimary ? secondaryView : primaryView)
duration:1.0
options:(displayingPrimary ? UIViewAnimationOptionTransitionFlipFromRight :
UIViewAnimationOptionTransitionFlipFromLeft)
completion:^(BOOL finished) {
if (finished) {
displayingPrimary = !displayingPrimary;
}
}];
Trong trường hợp này, nếu các hình ảnh động (vì lý do gì) không hoàn chỉnh, sau đó các quan điểm vẫn chưa được trao đổi, và bạn hoàn toàn không muốn lật giá trị của displayingPrimary
, bởi vì bạn' sau đó sẽ có một bản ghi không chính xác về tình trạng của bạn. Đó là lý do tại sao cờ finished
được chọn trong trường hợp này.
Lưu ý rằng trong hầu hết (nếu không phải tất cả) các mẫu mã khác trong hướng dẫn đó, cờ không được chọn - đó là vì nó không quan trọng trong những trường hợp đó (chạy một hoạt ảnh khác sau lần đầu tiên, ví dụ hoặc thay đổi một số giá trị mà không phụ thuộc vào việc hoàn tất thành công hoạt ảnh).
Nguồn
2012-05-02 18:37:20
để âm thanh như một khối hoàn thành có thể thực sự chạy ngay cả khi bool kết thúc bằng không. tại sao điều đó lại xảy ra? vì nó là một khối "hoàn thành", nó sẽ không chạy nếu khối trước đã thực sự hoàn thành? – johnbakers
Bắt đầu một hình ảnh động mới với một trong những phương pháp đó, có một tùy chọn để có một hình mới làm gián đoạn đầu tiên. Ngoài ra còn có một tùy chọn cho phép tương tác người dùng với chế độ xem, có thể là cơ hội để hủy hoạt ảnh. –
Theo doc transitionFromView thêm toView tại BEGINNING của hoạt ảnh và lấy từ View out of superView tại END của hoạt ảnh. Điều đó có nghĩa là nếu kết thúc là sai hơn BOTH fromView và toView vẫn còn đó? Bởi vì trong trường hợp của tôi, tôi đã thấy những trường hợp cả hai đều biến mất. –