Просмотр XIB с автоматическим макетом

Я создал XIB и использовал AutoLayout. Он отлично отображается, если я проверю его в окне предварительного просмотра. введите здесь описание изображения

Теперь я попытался загрузить этот NIB, а затем добавить его в качестве подвида в другой ViewController, используя следующий код:

myNibView = [[NSBundle mainBundle]loadNibNamed:@"CustomNib" owner:self options:nil].lastObject;
myNibView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view myNibView];

На этот раз он рассеивает все виды, как показано на изображении ниже. введите здесь описание изображения

Я включил ведение журнала и проверил фрейм SubView, но фрейм XIB (SubView) изменился в соответствии с представлением UIViewController, но Subviews XIB не согласовывались с этим.

2015-03-21 14:38:13.527 [3015:77723] newSubview.frame before = {{0, 0}, {420, 613}}
2015-03-21 14:38:13.633 [3015:77723] containerView.bounds after = {{0, 0}, {320, 504}}
2015-03-21 14:38:13.634 [3015:77723] newSubview.frame after = {{0, 0}, {320, 504}}

Есть ли какая-нибудь идея, как добавить XIB в качестве подпредставления в другое, сохранив ограничения автоматического макета, чтобы он работал правильно, как это было в XIB?


person Mrug    schedule 21.03.2015    source источник


Ответы (2)


не используйте myNibView.translatesAutoresizingMaskIntoConstraints = NO; потому что он удаляет все ограничения в представлении

person Dheeraj Kumar    schedule 21.03.2015

Я решил эту проблему, переместив все подвиды XIB вместе с ScrollView в другой UIView.

Иерархия была такой,

XIB
--UIScrollView
----UIView 1
----UIView 2
----UIView 3
.
.

Но теперь я изменил его, как показано ниже,

XIB
--UIView
----UIScrollView
------UIView 1
------UIView 4
------UIView 3
.
.
.

И это сработало.

person Mrug    schedule 23.03.2015