2012-04-09 46 views
1

现在我已经在这个问题上玩了两天,但没有任何进展。我想要做的事很简单,我认为:在Xcode中设置分组单元格的宽度

我有一个320x60的图像,我使用普通的TableView工作oke,因为这些单元格占用了屏幕的整个宽度(320)。 TableView中的分组单元格宽度为300,左侧和右侧的插入/左侧边距为10。

我可以以某种方式删除这些插入/边距,并让分组的单元格为320宽?我试着将内容插入到-10。这会“移除”左边距,但仍然只有300宽。还尝试编辑故事板的XML(我正在使用iOS 5 - 故事板),但没有喜悦。

这类似的问题在这里得到了回答,因为没有它是不可能的,hopfully东西在2年以上,改变!: Adjust cell width in grouped UITableView

PS我想改变宽度为背景图像包含不错的阴影,我读过那种对阴影的高度使用可能意味着性能问题。此外,阴影的边界是5px,所以如果使用标准宽度,则意味着-10px宽。

非常感谢!

回答

3

an 不整齐的解决方案是使表视图340像素宽,并在屏幕左边缘10个像素。

溶液,涉及私有类的改变特性是使一个子类UITableViewCell,并覆盖其layoutSubviews方法。当我登录子视图,我发现这些:

"<UIGroupTableViewCellBackground: 0x95246b0; frame = (9 0; 302 45); autoresize = W; layer = <CALayer: 0x95226b0>>", 
"<UITableViewCellContentView: 0x92332d0; frame = (10 0; 300 43); layer = <CALayer: 0x9233310>>", 
"<UIView: 0x95248c0; frame = (10 0; 300 1); layer = <CALayer: 0x951f140>>" 

如果我们把这些子视图,并填补了整个边界可发生什么呢?

- (void)layoutSubviews; 
{ 
    // By default the cell bounds fill the table width, but its subviews (containing the opaque background and cell borders) are drawn with padding. 
    CGRect bounds = [self bounds]; 

    // Make sure any standard layout happens. 
    [super layoutSubviews]; 
    // Debugging output. 
    NSLog(@"Subviews = %@", [self subviews]); 
    for (UIView *subview in [self subviews]) 
    { 
     // Override the subview to make it fill the available width. 
     CGRect frame = [subview frame]; 
     frame.origin.x = bounds.origin.x; 
     frame.size.width = bounds.size.width; 
     [subview setFrame:frame]; 
    } 
} 

在这个特殊的时刻,在iOS 5.1模拟器上,这是有效的。现在,iOS的某些未来版本可能会重构这些类,导致此方法灾难性地破坏表格布局。即使您只是修改其框架,您的应用程序可能会被拒绝更改UITableViewCellContentView的属性。所以,你需要多少钱让你的单元格填满桌子宽度?

+0

从设计师的角度来看,这是必须的。如果看起来没有“整洁”的方式,我们会保持宽度并改变背景以适应。如果当时没有其他选项,我会将其标记为最佳答案,谢谢! – d4jo 2012-04-09 17:42:13

+0

这真棒!我一直在寻找这个黑客。我想要一个普通的TableView,但不希望节标题粘到顶端。唯一的方法是切换到分组模式,这会导致UITableView覆盖单元格背景,然后添加此修复程序来调整单元格的大小。恨苹果不给开发人员自由,并让我们做那里黑客定制。 – esbenr 2012-11-21 06:54:58

0

您可以通过故事板访问Size Inspector中的UITableView的Leading和Trailing Space约束。我不知道什么时候添加了,但将Leading Space Constraint设置为-10,将Trailing Space Constraint设置为10会使单元格宽度变大。

+0

我在故事板中选择表格视图时看不到那些选项。 – XCool 2013-06-25 02:09:32

相关问题