2013-04-10 2 views
4

У меня есть NSImageView в NSView, настроенный в IB. NSImageView имеет тот же размер, что и NSView.Autolayout NSImageView в NSView - размер шкалы. Программно установлен NSLayoutConstraint

Все работает нормально, и NSImageView имеет такой же размер, что и NSView при изменении размера окна.

НО, теперь я добавил анимацию (переход от A в B) к NSImageView, и это испортит ограничения, которые были установлены в IB. Поэтому я должен делать это программно.

Как я мог программно установить NSLayoutConstraint, чтобы мой NSImageView имел тот же размер, что и мой NSImageView (супервизор)?

UPDATE:

Просто чтобы дать вам, ребята, еще немного информации. Мое приложение использует разделенное представление (три представления), и вместо добавления NSImageView в IB я теперь добавляю его программно. Я добавляю новое представление (которое должно быть масштабируемо к его родительскому представлению) к третьему виду в режиме разделения.

Считаете ли вы, что разделение зрения вызывает эти проблемы?

UPDATE 2:

Хорошо, я ближе к фиксации этого. Я удалил NSImageView из представления и вместо этого добавил NSView. NSView масштабировался отлично, но как только я добавил NSImageView, он перестал работать так, чтобы NSImageView не масштабировался после изменения размера окна.

Иными словами, проблема заключается в самом NSImageView. Он не будет масштабироваться после изменения размеров окна ...

решаемых

Я решил его с помощью PDF View вместо вида изображения (это был PDF Я хотел показать). Я установил для свойства autoScales значение YES в PDF-представлении.

+1

С ограничениями, данный Fruity Geek вашей программа должны work.Are вы уверены, что нет никаких других ограничений добавили автомагический по ИБ? – kwicher

+0

Странно ... Я обновил добавленную некоторую информацию к моему вопросу. Все еще не получится, чтобы это сработало. – Mikael

ответ

4

Я предполагаю, что у вас уже есть ссылки на мнения в примере ниже:

NSView * parentView; 
NSImageView * imageView; 
[imageView setTranslatesAutoresizingMaskIntoConstraints:NO]; //Required to opt-in to autolayout 
[parentView addSubview:imageView]; //Subview must exist before adding constraint. 

NSDictionary * views = NSDictionaryOfVariableBindings(imageView); 
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" 
                    options:0 
                    metrics:nil 
                    views:views]]; 
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" 
                    options:0 
                    metrics:nil 
                    views:views]]; 
+0

Я добавил выходы к моим ограничениям в IB и удалил их перед добавлением кода. Он работает на полу. Представления теперь имеют одинаковый размер, но я больше не могу изменять размер окна. Есть идеи? – Mikael

+0

Дополнительная информация. Окно изменяется на размер моего представления, а затем я не могу изменить размер окна. – Mikael