Задаването на videoGravity на AVLayerVideoGravityResizeAspectFill няма ефект върху iOS 5.0

Внедрих персонализиран филмов плейър с AVPlayer. При задаване на стойността на videoGravity в AVPlayerLayer до AVLayerVideoGravityResizeAspectFill виждам желания ефект в iOS 4.2, 4.3. Но по някакъв начин на iOS 5.0 няма ефект. Някой вижда ли подобен проблем? Правя ли нещо нередно?


person Soumya Das    schedule 12.12.2011    source източник


Отговори (2)


В iOS5 трябва да нулирате границите на слоевете след настройка на videoGravity.

Това проработи за мен:

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

РЕДАКТИРАНО: „self“ сочи към PlayerView (подклас на UIView) обект от пример „Putting all together“: https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

person miham    schedule 02.02.2012
comment
какво имаш предвид под нулиране? това което правиш е нищо. Двете страни на последния ред са равни. Както се очаква, това няма ефект върху iOS 8. - person Duck; 08.10.2014
comment
Да, в последния ред на кода, LHS и RHS са еднакви, как се нулират границите? - person Pradeep Rajkumar; 05.06.2018

Намерих решението на този проблем. Поставете отметка в квадратчето „Clip Subviews“ в IB за изгледа със слоя, към който ще прикачите видеоплейъра. След това задайте AVLayerVideoGravityResizeAspectFill на вашия обект AVPlayerLayer. Ако нямате изгледа в IB, но го създавате програмно, задайте свойството clipsToBounds на YES.

person carlos_ms    schedule 06.02.2012