2013-05-16 3 views
1

В моем приложении у меня есть главное окно, где я воспроизвожу видео с помощью AVPlayer. Чтобы заставить конкретное соотношение сторон использовать метод setAspectRatio:. Я поместил его в windowControllerDidLoadNib моего приложения: так выглядит код:setAspectRatio не работает до изменения размера окна

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController 
{ 
    [super windowControllerDidLoadNib:windowController]; 

    // adjust the player aspect ratio 
    [windowController.window setAspectRatio:NSMakeSize(1.85,1)]; 
    ... 
    ... 
} 

Проблема заключается в том, что это соотношение сторон не получает установить, пока не изменять размер окна.

Кто-нибудь знает, в чем проблема может быть здесь? Любая помощь очень ценится.

ответ

2

aspectRatio окна - это ограничение * при изменении размера окна. Итак, да, это не имеет никакого эффекта, пока пользователь не попытается это сделать.

Вам необходимо явно установить окно frame на прямоугольник, размер которого имеет это соотношение сторон, и вам нужно будет вычислить этот прямоугольник самостоятельно.

Убедитесь, что вы правильно различаете прямоугольник рамки окна, прямоугольник содержимого окна (который имеет тот же размер, что и содержимое содержимого окна), и размер содержимого, которое вы собираетесь воспроизводить. Например, вы, вероятно, хотите, чтобы строка заголовка (которая является частью фрейма) была в дополнение к «1» в этом отношении, а не в ее части.

* Не в смысле NSLayoutConstraint, просто в общем смысле.

+0

спасибо Питер за отличный ответ! –

Смежные вопросы