iphone - 如何在 iPad 上将 View 置于分组的 UITableViewCell 中?

标签 iphone objective-c cocoa-touch ipad uitableview

我正在将一个 iPhone 应用程序转换到 iPad,但我遇到了一个无辜且看似微不足道的定位问题。我有一个 UITableViewCell,它只包含一个以单元格为中心的 UISwitch。该单元格位于具有 Grouped 样式的 UITableView 中。

在 iPhone 上,我只是将开关的中心属性设置为 tableView:cellForRowAtIndexPath: 中单元格的中心。 这对 iPhone 来说已经足够了,因为无论表格样式如何,单元格的中心都是相同的。 这也发生在 iPhone 上,但偏移量较小,因此差异更细微。这是 iPhone 的代码:

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    UISwitch *view = [[UISwitch alloc] initWithFrame:CGRectZero];
    [view addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
    view.center = cell.center;        
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    [cell.contentView addSubview:view];
    [view release];

在 iPad 上,无需更改任何代码,开关的位置仍然位于 iPhone 屏幕的中央。这很糟糕,因为 iPad 比 iPhone 大得多。所以我将定位代码移动到 tableView:willDisplayCell:forRowAtIndexPath: ,现在它位于中心的另一侧(靠近屏幕右侧)。

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
UISwitch *s = (UISwitch *)[cell.contentView viewWithTag:SwitchTag];
s.center = CGPointMake(cell.contentView.center.x,s.center.y); //pushes the switch too far to the right

然而,当我记录我感兴趣的各种坐标和帧时,我得到了我所期望的:单元格中心的 x 坐标为 384.0,它是屏幕宽度的一半。我也尝试过重新计算 UISwitch 的整个框架,但由于我使用的是屏幕的值,所以开关最终位于同一个位置,太靠右了。

认为是在 tableView:willDisplayCell:forRowAtIndexPath: 被调用之后(或之前,甚至)进行一些转换,使所有这些数字变得毫无意义.看起来好像整个单元格都移动了 x,其中 x 是从屏幕边缘到单元格开始的距离,即使没有报告在 frame 属性中。

我确定我遗漏了一些微不足道的东西。请赐教。

最佳答案

它可能不是最优雅的解决方案,当然也不会开始深入了解为什么事情不在您期望的地方而扰乱 tableCell View 的潜在行为但是

view.center =CGPointMake(tableView.center.x-(view.frame.size.width/2), cell.center.y) ;

如果您使用那一行而不是您发布的那一行,它应该很高兴(至少在我的快速测试中看起来是这样)将那个开关放在表格的中间。

关于iphone - 如何在 iPad 上将 View 置于分组的 UITableViewCell 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013104/

相关文章:

ios - 推送 View Controller 时出现断断续续的过渡

objective-c - 即时更改表格 View 行高

iphone - 如何在 iOS 应用程序中显示不在 Unicode 字符表中的自定义表情符号?

ios - HTML5 视频并不总是在 iPhone 上自动播放

iphone - 如何让内容在 Iphone 的 safari 或 android 的 webkit 的 DIV 中动态滚动?

objective-c - Cocos2d旋转关于触摸移动的问题

iphone - 将 UIButton 数组添加到 navigationItem.rightBarButtonItem 会导致 NSInvalidArgumentException

iphone - 在线程中解除分配

ios - 为什么 Ios viewPager 与 UISearchController 一起崩溃?

objective-c - A* 寻路 - 如何修改 G 和 H 以包含崎岖地形移动成本?