Ios 将方向更改为横向单元高度极高时的UITableView

Ios 将方向更改为横向单元高度极高时的UITableView,ios,uitableview,ios7,storyboard,Ios,Uitableview,Ios7,Storyboard,我有一个带有NavigationController和tableView的UIView。该表有1个原型单元,并包含一些标签。所有使用情节提要设计的场景和所有约束都将自动设置。所以我在我的应用程序中使用了10个iPhone的UIView,其中9个在纵向和横向模式下显示正确。一种是纵向模式,当转向横向时,在具有一行内容的单元和具有20或30行内容的单元之间有大约300px的空间。同样的空间在那个单元的末端。我尝试了其他几个约束条件,也是手动完成的。我尝试了标签的其他x/y/宽度/高度设置,但没有成功

我有一个带有NavigationController和tableView的UIView。该表有1个原型单元,并包含一些标签。所有使用情节提要设计的场景和所有约束都将自动设置。所以我在我的应用程序中使用了10个iPhone的UIView,其中9个在纵向和横向模式下显示正确。一种是纵向模式,当转向横向时,在具有一行内容的单元和具有20或30行内容的单元之间有大约300px的空间。同样的空间在那个单元的末端。我尝试了其他几个约束条件,也是手动完成的。我尝试了标签的其他x/y/宽度/高度设置,但没有成功。单元格高度的代码为:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    if (!self.cellNews) {
        self.cellNews = [self.tableView dequeueReusableCellWithIdentifier:@"CellNews"];
    }

    theAktuellList = [app.aktuellArray objectAtIndex:indexPath.row];

    NSString *currentLanguage =
    [[NSString alloc] initWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/sprache.txt"]
                                    encoding:NSUTF8StringEncoding error:NULL];

    if ([currentLanguage isEqual:@"de"])
    {
        self.cellNews.Titel.text = theAktuellList.TitelD;
        self.cellNews.Datum.text = theAktuellList.DatumD;
        self.cellNews.Nachricht.text = theAktuellList.NachrichtD;
        self.cellNews.Wichtig.text = theAktuellList.WichtigD;
    }
    else
    {
        if ([currentLanguage isEqual:@"fr"])
        {
            self.cellNews.Titel.text = theAktuellList.TitelF;
            self.cellNews.Datum.text = theAktuellList.DatumF;
            self.cellNews.Nachricht.text = theAktuellList.NachrichtF;
            self.cellNews.Wichtig.text = theAktuellList.WichtigF;

        }
        else
        {
            self.cellNews.Titel.text = theAktuellList.TitelE;
            self.cellNews.Datum.text = theAktuellList.DatumE;
            self.cellNews.Nachricht.text = theAktuellList.NachrichtE;
            self.cellNews.Wichtig.text = theAktuellList.WichtigE;

        }
    }

    [self.cellNews layoutIfNeeded];
    CGFloat height = [self.cellNews.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    return height;
}

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 40;
}
该应用程序是一个通用应用程序。此UIView内部带有tableView,并且内容相同,在Pad上不会出现任何问题。我的错在哪里,或者我可以改变什么,或者尝试解决这个问题

根据Raj的回答进行编辑:

嗨,拉杰,谢谢你的链接。我翻了一遍,什么也没找到。但我明天再做一次。也许我没说手机和它的标签。我有一个高度为45的原型单元。在内部,我有4个标签,每个标签有25个高度,10个顶部和10个底部约束。标题有20左和右,日期有30左和20右,消息有30左和20右,Wichtig有20左和右。它们都是一个放置在另一个上,因为每个单元格中只使用一个标签。这意味着第一个单元格只包含滴度,第二个单元格包含日期,第三个单元格包含消息,依此类推。每个标签的所有约束都是蓝色的,只要标签中只有一行文本,单元格就构建正确。每增加一行文本,顶部和底部的填充就会增加。但约束设置为固定值

2014年8月14日编辑:

我看了教程,没有任何积极的变化。根据纵向方向上的labelwidth计算labelheight。当旋转到横向时,标签的高度与纵向完全相同,但宽度增加了近两倍。结果是实际文本高度较低,在标签中居中水平

我添加了一个,我认为这与其说是一个合适的解决方案,不如说是一个肮脏的把戏,使用了一个根据标签的长内容返回高度的方法:

CGFloat height = [self.cellNews.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

if ([self isLandscapeOrientation]) {

    if (theAktuellList.NachrichtD == nil) {

        return height + 1;

    } else {

        return  height/1.5;

    }

} else {

    return height + 1;

}

这在光学上很好,我没有得到任何提示或错误,但必须有更好的方法来解决这个问题。学习/思考或搜索方向的每一个帮助都很好。

请阅读下面提到的教程,该教程解释了动态表格视图单元格高度和自动布局,您将使用它获得预期的输出