2011-12-12 17 views
8

Tôi đã triển khai trình phát phim tùy chỉnh với AVPlayer. Khi đặt giá trị của videoGravity trong AVPlayerLayer thành AVLayerVideoGravityResizeAspectFill Tôi thấy hiệu ứng mong muốn trong iOS4.2, 4.3. Nhưng bằng cách nào đó trên iOS 5.0 nó đã không có hiệu lực. Có ai nhìn thấy một vấn đề tương tự? Tôi có làm điều gì sai?Đặt videoGravity thành AVLayerVideoGravityResizeAspectFill không có hiệu lực trên iOS 5.0

Trả lời

16

Trên iOS5, bạn nên đặt lại giới hạn lớp sau khi đặt videoGravity.

này đã làm việc cho tôi:

((AVPlayerLayer *)[self layer]).videoGravity = AVLayerVideoGravityResizeAspectFill; 
((AVPlayerLayer *)[self layer]).bounds = ((AVPlayerLayer *)[self layer]).bounds; 

EDITED: "tự" điểm đến một PlayerView (lớp con của UIView) đối tượng từ ví dụ "Đưa tất cả cùng nhau": https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

+0

Câu trả lời hay !!! Thk. –

+0

ý của bạn là gì? những gì bạn đang làm là không có gì. Hai bên của dòng cuối cùng bằng nhau. Theo dự kiến, điều này không ảnh hưởng đến iOS 8. – SpaceDog

3

Were bạn có thể để giải quyết vấn đề của bạn với đề xuất của miham ?. Câu hỏi của tôi đã bị cấm bởi điều này "BoltClock" điều hành, chỉ muốn biết nếu đề nghị đó làm việc cho bạn vì nó không cho tôi.

Vui lòng, BoltClock, không xóa câu hỏi của tôi. Tôi nghĩ là hợp pháp khi hỏi đối tượng 'tự' là loại gì. miham nói rằng giải pháp đó làm việc cho anh ta, tốt, nó không hiệu quả đối với tôi, vì vậy tôi nghĩ rằng câu hỏi 'điểm tự' có thể cho tôi manh mối về loại đối tượng nào tôi nên sử dụng. Tài liệu nói rằng việc đặt trọng lực thành AVLayerVideoGravityResizeAspectFill sẽ cắt video thành chế độ xem AVPlayerLayer nhưng không thực hiện được, và tôi đã thử nghiệm điều này trong iOS 4.3.2 và iOS 5, để câu trả lời của miham không có câu trả lời cho câu hỏi gốc Soumya Das và để tôi (những gì 'tự' chỉ đến?) quá. Có lẽ bạn có câu trả lời ?, nếu có, hãy đăng câu hỏi ở đây và không chỉ xóa câu hỏi của tôi.

CHỈNH SỬA: Tìm giải pháp cho vấn đề này. Chọn hộp kiểm "Clip Subviews" trong IB cho chế độ xem với lớp bạn sẽ đính kèm trình phát video. Sau đó, đặt AVLayerVideoGravityResizeAspectFill của đối tượng AVPlayerLayer của bạn. Nếu bạn không có chế độ xem trong IB nhưng bạn đang tạo nó theo cách lập trình, hãy đặt thuộc tính clipToBounds thành CÓ.

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