Я реализовал собственный проигрыватель фильмов с AVPlayer
. При установке значения videoGravity в AVPlayerLayer
на AVLayerVideoGravityResizeAspectFill
я вижу желаемый эффект в iOS
4.2, 4.3
. Но как-то на iOS 5.0
не подействовало. Кто-нибудь видит подобную проблему? Я делаю что-то неправильно?
Установка для videoGravity значения AVLayerVideoGravityResizeAspectFill не влияет на iOS 5.0.
Ответы (2)
В iOS5 вы должны сбросить границы слоев после установки videoGravity.
Это сработало для меня:
((AVPlayerLayer *)[self layer]).videoGravity = AVLayerVideoGravityResizeAspectFill;
((AVPlayerLayer *)[self layer]).bounds = ((AVPlayerLayer *)[self layer]).bounds;
ОТРЕДАКТИРОВАНО: "self" указывает на объект PlayerView (подкласс UIView) из примера "Собираем все вместе": https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html а>
person
miham
schedule
02.02.2012
что вы имеете в виду под сбросом? то, что вы делаете, ничего. Две стороны последней строки равны. Как и ожидалось, это не влияет на iOS 8.
- person Duck; 08.10.2014
Да, в последней строке кода LHS и RHS одинаковы, как это сбрасывает границы?
- person Pradeep Rajkumar; 05.06.2018
Нашел решение этой проблемы. Отметьте флажок «Clip Subviews» в IB для представления со слоем, к которому вы собираетесь прикрепить видеопроигрыватель. Затем установите AVLayerVideoGravityResizeAspectFill вашего объекта AVPlayerLayer. Если у вас нет представления в IB, но вы создаете его программно, установите для его свойства clipsToBounds значение YES.
person
carlos_ms
schedule
06.02.2012