Q: Layout broken when viewDidDisappear I Wear several days trying to solve the following problem but I have not gotten anything :(

I have a viewController with a UIScrollView and some subViews, I'm adding some of them by interface builder and others by code. When I call the method for push the next viewController, the current view breaks and still broken when I pop it.
I've tried to remove Autolayout setting from Storyboard but still not working.
I'm setting the frames of the views programmatically and I move the content offset of the scrollView for make the animation.
I'm calling this method in viewWillAppear:
- (void)prepareQuestion
{
    int nextYposition;

    // Question
    NSString *q = [self.theQuestion getQuestionTextForLanguage:lang];
    NSString *badText = [self.theQuestion getInfTextForLanguage:lang];
    NSString *goodText = [self.theQuestion getSupTextForLanguage:lang];

    self.answer.questionID = self.theQuestion.questionID;

    if (whiteStyle) {
        question = [[NPSQuestionViewController alloc] initWithQuestion:q AndStyle:kNPSQuestionStyleWhite];
    } else {
        question = [[NPSQuestionViewController alloc] initWithQuestion:q AndStyle:kNPSQuestionStyleOther];
    }

    question.view.center = CGPointMake(self.view.center.x, self.view.center.y - 50);
    [self addChildViewController:question];
    [self.scrollView addSubview:question.view];

    nextYposition = question.view.frame.origin.y + question.view.frame.size.height;

    int questionHeight = 0; // Guardamos el alto dependiendo del tipo de control

    if (self.sliderStyle) {
        // Slider test
        if (whiteStyle) {
            NPSSliderViewControl = [[NPSSliderViewController alloc] initWithStyle:kNPSSliderViewStyleWhite];
        } else {
            NPSSliderViewControl = [[NPSSliderViewController alloc] initWithStyle:kNPSSliderViewStyleOther];
        }

        NPSSliderViewControl.iconSet = [[[OpinatManager sharedInstance] campanya] tipoIconos];
        [NPSSliderViewControl setBadText:badText andGoodText:goodText];
        [self addChildViewController:NPSSliderViewControl];
        [self.scrollView addSubview:NPSSliderViewControl.view];
        NPSSliderViewControl.delegate = self;

        CGRect frame = NPSSliderViewControl.view.frame;
        [NPSSliderViewControl.view setFrame:CGRectMake(0, nextYposition, frame.size.width, frame.size.height)];
        questionHeight = frame.size.height - 33; // 33 es el valor de la parte que desaparece del control

    } else {
        // Control
        if (whiteStyle) {
            NPSBtnViewControl = [[NPSBtnViewController alloc] initWithStyle:kNPSBtnViewStyleWhite];
        } else {
             NPSBtnViewControl = [[NPSBtnViewController alloc] initWithStyle:kNPSBtnViewStyleOther];
        }

        NPSBtnViewControl.iconSet = [[[OpinatManager sharedInstance] campanya] tipoIconos];
        [NPSBtnViewControl setBadText:badText andGoodText:goodText];
        [self addChildViewController:NPSBtnViewControl];
        [self.scrollView addSubview:NPSBtnViewControl.view];
        NPSBtnViewControl.delegate = self;

        CGRect frame = NPSBtnViewControl.view.frame;
        [NPSBtnViewControl.view setFrame:CGRectMake(0, nextYposition, frame.size.width, frame.size.height)];
        questionHeight = frame.size.height - 58; // 60 es el valor de la parte que desaparece del control
    }

    nextYposition += questionHeight;

    // Motives question
    if (whiteStyle) {
        motivesQuestion = [[NPSQuestionViewController alloc] initWithQuestion:self.insatisfactionTitle AndStyle:kNPSQuestionStyleWhite];
    } else {
        motivesQuestion = [[NPSQuestionViewController alloc] initWithQuestion:self.insatisfactionTitle AndStyle:kNPSQuestionStyleOther];
    }

    CGRect secondQuestionFrame = motivesQuestion.view.frame;
    secondQuestionFrame.origin.y = nextYposition;
    motivesQuestion.view.frame = secondQuestionFrame;
    motivesQuestion.view.alpha = 0;
    [self.scrollView addSubview:motivesQuestion.view];
    motivesQuestion.view.tag = 22;

    questionHeight = motivesQuestion.view.frame.size.height;

    nextYposition += questionHeight;

    // Setting up table Y position. Only works if I setted in viewDidAppear
    nextPosition = nextYposition;
    resetPosition = nextYposition;

    // Ajustamos la tableView
    self.tableMotives.alpha = 0;
}

Any ideas? thanks! 

A: If you're using auto-layout you should basically never be setting the view frames directly. Instead, you should be setting up your constraints so that everything is automatically placed in the correct place and using an @property to hold 'special' references to selected constraints. These 'special' constraints are ones that control the overall position of other content on the screen and they work by having a constant offset.
When you want to perform some animation to change where everything is on the screen, use a UIView animation block and modify only the constants on your constraints.
If you want to reset, again modify the constants on your constraints.
