O iOS7.0 e o iOS 7.1 não respeitam a Altura da visualização dinâmica da tableview

Eu usei o autolayout em várias implementações para o UITableViewCell, com a abordagem de permitir que o tamanho intrínseco defina o tamanho e, por sua vez, forneça altura para as linhas de exibição de tabela.

Estranhamente, mas segmentar o iOS7 e superior com o Autolayout no UITableViewCell não está funcionando como desejado.

Para corrigir um dos outros problemas em que as células da tableview ficaram espremidas (no iOS8 e acima), adicionei a seguinte verificação

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 ){
    self.tblvChatList.rowHeight =  UITableViewAutomaticDimension;
    self.tblvChatList.estimatedRowHeight = 44;
}

Os únicos outros métodos de tableview que eu usei são

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if ([self.arrDataSource count] > ZERO_VALUE) {
        self.tblvChatList.backgroundView = nil;
        self.tblvChatList.separatorStyle = UITableViewCellSeparatorStyleNone;
        return [self.arrDataSource count];
    }
    else {
        // Display a message when the table is empty

        if (!viewTableBackground) {

            self.viewTableBackground = [[UIView alloc] initWithFrame:self.tblvChatList.bounds];

            UIImageView* imgConChatLogo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IconConChatTheme"]];
            [imgConChatLogo setContentMode:UIViewContentModeCenter];
            [imgConChatLogo setTranslatesAutoresizingMaskIntoConstraints:NO];



            UILabel* lblNoListDataError = [[UILabel alloc] initWithFrame:CGRectMake(ZERO_VALUE, ZERO_VALUE,
                                                                                    (2*self.view.bounds.size.width)/3, self.view.bounds.size.height)];

            lblNoListDataError.text = NSLocalizedString(@"STR_WRITE_SOMETHING_TO_MATCH",
                                                            @"No data is currently available. Please pull down to refresh.");
            [lblNoListDataError setTranslatesAutoresizingMaskIntoConstraints:NO];
            lblNoListDataError.textColor = [UIColor lightGrayColor];
            lblNoListDataError.numberOfLines = ZERO_VALUE;
            lblNoListDataError.textAlignment = NSTextAlignmentCenter;
            lblNoListDataError.font = [Theme fontForRegularBody];
            [lblNoListDataError sizeToFit];

            [viewTableBackground addSubview:lblNoListDataError];
            [viewTableBackground addSubview:imgConChatLogo];

            [viewTableBackground addConstraint:
             [NSLayoutConstraint constraintWithItem:imgConChatLogo
                                          attribute:NSLayoutAttributeCenterX
                                          relatedBy:NSLayoutRelationEqual
                                             toItem:viewTableBackground
                                          attribute:NSLayoutAttributeCenterX
                                         multiplier:1
                                           constant:0]];

            [viewTableBackground addConstraint:
             [NSLayoutConstraint constraintWithItem:lblNoListDataError
                                          attribute:NSLayoutAttributeCenterX
                                          relatedBy:NSLayoutRelationEqual
                                             toItem:viewTableBackground
                                          attribute:NSLayoutAttributeCenterX
                                         multiplier:1
                                           constant:0]];


            [viewTableBackground addConstraint:
             [NSLayoutConstraint constraintWithItem:imgConChatLogo
                                          attribute:NSLayoutAttributeBaseline
                                          relatedBy:NSLayoutRelationEqual
                                             toItem:viewTableBackground
                                          attribute:NSLayoutAttributeCenterY
                                         multiplier:1
                                           constant:-10]];
            [viewTableBackground addConstraint:
             [NSLayoutConstraint constraintWithItem:lblNoListDataError
                                          attribute:NSLayoutAttributeTop
                                          relatedBy:NSLayoutRelationEqual
                                             toItem:viewTableBackground
                                          attribute:NSLayoutAttributeCenterY
                                         multiplier:1
                                           constant:10]];

        }

        self.tblvChatList.backgroundView  = self.viewTableBackground;
        self.tblvChatList.separatorStyle = UITableViewCellSeparatorStyleNone;
    }
    return ZERO_VALUE;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell* cell  = nil;
    NSUInteger userId = [[NSUserDefaults standardUserDefaults] integerForKey:@"USER_ID"];

    ChatMessage* message = (ChatMessage*)[self.arrDataSource objectAtIndex:indexPath.row];
    if (userId  == [message messageSenderId]) {
        static NSString* reuseIdentifierReceiverCell = @"ChatReceiverCustomCell";
        cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierReceiverCell forIndexPath:indexPath];
        [(ChatReceiverCell*)cell showMessage:message];
    }
    else {
        static NSString* reuseIdentifierSenderCell = @"ChatSenderCustomCell";
        cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierSenderCell forIndexPath:indexPath];

        // Configure the cell...
        [(ChatSenderCell*)cell showMessage:message];

    }
    return cell;
}

Eu também não useiestimateHeightForRowAtIndexPath: ouheightForRowAtIndexPath: e deixe o conteúdo decidir a altura do tableviewRow.

Questão:

Por que as células tableView são compactadas durante a execução no iOS7, iOS7.1 (Simulador e dispositivos), mas são exibidas perfeitamente no iOS8 e acima para o mesmo conteúdo para o mesmo conteúdo.

Para corrigir isso, se eu implementarestimatedHeightForRowAtIndexPath: então não implementandoheightForRowAtIndexPath: resulta em uma falha no iOS7. Existe uma maneira de permitir que a visualização da tabela inferir a altura da linha do próprio sistema de autolayout (como derivado do tamanho do conteúdo intrínseco do UILabel com o preenchimento extra mantido em consideração, pois eu adicionei as margens necessárias)?

As restrições de autolayout para UILabel dentro da célula são as seguintes

questionAnswers(0)

yourAnswerToTheQuestion