Ios 将方向更改为横向单元高度极高时的UITableView
我有一个带有NavigationController和tableView的UIView。该表有1个原型单元,并包含一些标签。所有使用情节提要设计的场景和所有约束都将自动设置。所以我在我的应用程序中使用了10个iPhone的UIView,其中9个在纵向和横向模式下显示正确。一种是纵向模式,当转向横向时,在具有一行内容的单元和具有20或30行内容的单元之间有大约300px的空间。同样的空间在那个单元的末端。我尝试了其他几个约束条件,也是手动完成的。我尝试了标签的其他x/y/宽度/高度设置,但没有成功。单元格高度的代码为:Ios 将方向更改为横向单元高度极高时的UITableView,ios,uitableview,ios7,storyboard,Ios,Uitableview,Ios7,Storyboard,我有一个带有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;
}
这在光学上很好,我没有得到任何提示或错误,但必须有更好的方法来解决这个问题。学习/思考或搜索方向的每一个帮助都很好。请阅读下面提到的教程,该教程解释了动态表格视图单元格高度和自动布局,您将使用它获得预期的输出