我有一个UITableView
可以在模拟器和iPhone 4s以外的所有设备上正常加载。我一直在寻找答案,甚至把它搁置到现在,希望我能想到一个解决方案,但似乎没有任何效果。
我尝试的解决方案是删除可能存在冲突的代码,现在注释如下。
// Remove seperator inset
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
//[cell setSeparatorInset:UIEdgeInsetsZero];
}
// Prevent the cell from inheriting the Table View's margin settings
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
//[cell setPreservesSuperviewLayoutMargins:NO];
}
// Explictly set your cell's layout margins
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
//[cell setLayoutMargins:UIEdgeInsetsZero];
}
我目前的代码如下所示
- (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 4;
}
-(double) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 3) {
return 700.0;
}
return 44.0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 3) {
static NSString *homeTableIdentifier = @"GeneralInfoTableViewCell";
GeneralInfoTableViewCell *cell = (GeneralInfoTableViewCell *)[tableView dequeueReusableCellWithIdentifier:homeTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"GeneralInfoTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
} else if (indexPath.row == 2) {
...
请注意,我在此视图中删除了两次显示的徽标,这就是为什么“erbjudanden”在下面的错误视图中被切断的原因。
这就是iPhone 4s模拟器中的视图(正确方式)。
这就是实际iPhone 4s上的视图(错误的方式)
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
我在这里遇到问题,因为我的设备运行的是iOS 10,而我的模拟器运行的是iOS 9.3。
我怀疑视图层次结构调用的顺序略有不同,导致两者之间的显示不同。
在更新所需视图之前调用view.layoutIfNeeded()
帮助了我。