2010-01-12 45 views
16

Hoạt ảnh đơn và hai giai đoạn để xoay cửa sổ iPhone là gì?Hoạt ảnh hai giai đoạn và Hoạt ảnh hai giai đoạn cho ứng dụng iPhone?

Đây là "lỗi" thông điệp mà tôi nhận được trong Console Debugger (không bị treo):

Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations. 

Tôi đã làm việc thông qua cuốn sách "Bắt đầu phát triển iPhone: Khám phá iPhone SDK" bởi Apress (Dave Mark , Jeff LaMarche) về Dự án hoán đổi.

Trả lời

15

Mọi thứ được giải thích trong UIViewController Class Reference. Đặc biệt, hãy xem phần Xem Xoay ở gần đầu.

Từ tài liệu tham khảo:

Xử lý Xem Xoay

Theo mặc định, quan điểm UIViewController lớp hiển thị chỉ trong chế độ dọc. Để hỗ trợ các định hướng bổ sung, bạn phải ghi đè phương thức shouldAutorotateToInterfaceOrientation: và trả lại CÓ cho bất kỳ định dạng nào mà lớp con của bạn hỗ trợ. Nếu các thuộc tính tự động hóa của các chế độ xem được định cấu hình chính xác, thì có thể là tất cả những gì bạn phải làm. Tuy nhiên, lớp UIViewController cung cấp các móc bổ sung để bạn thực hiện các hành vi bổ sung nếu cần.

Để tạm thời tắt tính năng mà không cần thiết hoặc có thể khác gây ra vấn đề trong quá trình thay đổi hướng , bạn có thể ghi đè lên các phương pháp willRotateToInterfaceOrientation:duration: và thực hiện các hành động cần thiết đó. Sau đó, bạn có thể ghi đè phương thức didRotateFromInterfaceOrientation: và sử dụng phương pháp này để bật lại các tính năng sau khi thay đổi hướng hoàn tất.

Nếu bạn muốn thực hiện tùy chỉnh hoạt ảnh trong khi định hướng thay đổi, bạn có thể thực hiện theo một trong hai cách . Thay đổi hướng được sử dụng để xảy ra theo hai bước, với thông báo xảy ra ở đầu, giữa, và điểm kết thúc của vòng quay. Tuy nhiên, trong iPhone OS 3.0, hỗ trợ được thêm để thực hiện định hướng thay đổi trong một bước. Sử dụng một bước thay đổi hướng có xu hướng nhanh hơn so với quy trình hai bước cũ hơn và là thường được khuyến nghị cho bất kỳ mã mới nào.

Để thêm hình ảnh động cho một bước thay đổi định hướng, ghi đè lên các phương pháp willAnimateRotationToInterfaceOrientation:duration: và thực hiện các hình ảnh động của bạn đó. Để sử dụng phương pháp hai bước cũ hơn, hãy ghi đè một hoặc cả hai phương thức willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: để định cấu hình hoạt ảnh trước mỗi bước.Bạn chỉ phải chọn một kỹ thuật và ghi đè chỉ các phương thức được liên kết với kỹ thuật đó. Nếu bạn ghi đè phương thức được kết hợp với kỹ thuật hai bước , trình điều khiển chế độ xem sử dụng kỹ thuật đó theo mặc định là .

+2

Rất tiếc, điều này không hữu ích. Tôi không sử dụng bất kỳ tính năng định hướng nào và lỗi này vẫn xảy ra. Xuất hiện là một lỗi trong OS4. – typeoneerror

+0

Câu trả lời này đúng cho một số trường hợp, nhưng không phải là câu trả lời khác. Chắc chắn, phần đó trong tài liệu KHÔNG giải thích đầy đủ lỗi - có lỗi cụ thể trong UIImagePickerController/presentModalController của Apple đang kích hoạt thông báo lỗi này (và KHÔNG NÊN kích hoạt nó). Vẫn đang tìm cách giải quyết: ( – Adam

+0

@ Adam: http://stackoverflow.com/questions/2878947/getting-using-two-stage-rotation-animation-warning-with-uiimagepickercontroller – geon

3

Tôi đã thay đổi từ willAnimateFirstHalfOfRotationToInterfaceOrientation:duration: phương pháp thành willAnimateRotationToInterfaceOrientation:duration: phương pháp và cảnh báo biến mất.

Cảm ơn.

1

Câu trả lời của Ed Marty là câu trả lời đúng. Lý do nó sẽ xảy ra nếu bạn không ghi đè bất kỳ hoạt ảnh xoay nào có thể là bạn trả lời "CÓ" cho shouldAutorotate .. cho một số chế độ xem. Nếu bạn không thực hiện xoay vòng, thì bạn chỉ nên không ghi đè phương thức shouldAutorotate .. Nếu bạn ghi đè phương thức đó, thì chỉ cần ghi đè lên phương pháp xoay vòng một bước và chuyển nó đến siêu.

3

Tôi đã tìm ra thủ phạm trong trường hợp của tôi là UIImagePickerController (Tôi cũng không ghi đè lên bất kỳ hình ảnh động xoay):

[tự presentModalViewController: imagePicker hoạt hình: YES];

Thay thế imagePicker bằng chung UIViewController không tạo ra bất kỳ cảnh báo nào.

+0

Tôi có cùng vấn đề với UIImagePickerController Có cách nào khác để loại bỏ các lỗi mà không thay đổi nó để UIViewController? – karim

+1

Làm thế nào bạn đã xác định các thông số của UIImagePickerController bằng cách sử dụng một UIViewController ?? – Joze

1

Nếu bạn đang sử dụng iOS 4 và bạn nhận được cảnh báo này, tôi đã tìm ra cách để loại bỏ nó. Trong info.plist của bạn, có một mục có tên "Định hướng giao diện được hỗ trợ". Chọn định hướng mà ứng dụng của bạn hỗ trợ và cảnh báo hai giai đoạn sẽ biến mất khi đưa imagePicker lên.

1

Câu trả lời @plumiscles không hoàn toàn phù hợp với tôi - không có mục nào được gọi là 'Định hướng giao diện được hỗ trợ', có thể b/c nó là một dự án cũ. Nhưng bạn có thể có được hiệu quả tương tự bằng cách chỉnh sửa file plist trực tiếp và thêm này:

<key>UIInterfaceOrientation</key> 
    <string>UIInterfaceOrientationPortrait</string> 
0

tôi đã không qua cưỡi bất kỳ của những chức năng hai bước, nhưng tôi đã gọi hàm của riêng tôi khi tôi nhận được orientationChanged thông báo và tôi đã có dòng mã này trong đó. Nhận xét nó ra đã loại bỏ các cảnh báo và cho phép tự động xoay để hoạt động đúng. Xoay tự động vẫn làm việc với dòng mã này cho đến iOS 4.2, sau đó nó đã phá vỡ hoàn toàn. Đã dành rất nhiều thời gian tìm kiếm lý do tại sao việc xây dựng trong autoRotate ngừng hoạt động trong 4.2. Có lẽ điều này sẽ giúp người khác.

nhận xét ra dòng này để làm cho nó làm việc:
[[UIApplication sharedApplication] setStatusBarOrientation:currentOrientation animated:YES];

1

Cần thêm UIImagePickerController như là một subview để giải quyết lỗi này

[self.view addSubview:picker.view]; 
[self presentModalViewController:picker animated:NO]; 
0

Tôi đã xóa từ plist "định hướng giao diện được hỗ trợ" hàng và cảnh báo biến mất.

0

Tôi vừa gặp vấn đề tương tự. Trong trường hợp của tôi là một sai lầm ngớ ngẩn mà tôi đặt ở đây chỉ trong trường hợp bất cứ ai khác rơi vào cùng một vấn đề.

Trong ứng dụng tab của tôi, tôi xóa một trong các ViewControllers gốc và thêm một bảng mới với Storyboard để tạo phần "Cài đặt".

VC mới này phải là dạng xem VC và thậm chí tôi đã thiết kế, biên dịch và chạy nó mà không gặp vấn đề gì, khi tôi thay đổi hướng của ứng dụng, tôi tiếp tục bị lỗi “Sử dụng hiệu ứng xoay vòng hai giai đoạn”.

Vấn đề của tôi là tôi quên thay đổi trong giao diện tệp .h gốc "UIViewController" cho "UITableViewController".

Khi điều này được thực hiện, tôi đã thay đổi trên huy hiệu nhận dạng Storyboard lớp từ giá trị chung sang SettingsViewController của tôi và đó là kết thúc của nó.

Tôi hy vọng nó có thể giúp người khác. Phải mất một thời gian tôi mới có được điều này.

Chúc mừng,

1

Tôi đã có vấn đề này sau khi tạo một tabbarcontroller không có quan điểm điều khiển bên trong (không có tab), cảnh báo này biến mất một lần I kèm theo ít nhất một bộ điều khiển xem nó.

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