如何以分组样式设置UITableView中单元格的宽度

我已经为此工作了大约2天,因此我想与您分享我的经验。


问题是:是否可以使分组的UITableView中的单元格宽度变小?


答案是不。


但是有两种方法可以解决此问题。


解决方案#1:表格更薄 可以更改tableView的框架,以使表格变小。这将导致UITableView以减小的宽度呈现内部单元格。


解决方案如下所示:


-(void)viewWillAppear:(BOOL)animated

{

    CGFloat tableBorderLeft = 20;

    CGFloat tableBorderRight = 20;


    CGRect tableRect = self.view.frame;

    tableRect.origin.x += tableBorderLeft; // make the table begin a few pixels right from its origin

    tableRect.size.width -= tableBorderLeft + tableBorderRight; // reduce the width of the table

    tableView.frame = tableRect;

}

解决方案2:让单元格由图像渲染


此解决方案的说明如下:http : //cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html


希望这些信息对您有所帮助。我花了大约2天的时间尝试了很多可能性。这就是剩下的。


慕哥6287543
浏览 573回答 3
3回答

慕雪6442864

一种更好,更干净的方法是将UITableViewCell子类化并覆盖其-setFrame:方法,如下所示:- (void)setFrame:(CGRect)frame {    frame.origin.x += inset;    frame.size.width -= 2 * inset;    [super setFrame:frame];}为什么会更好?因为其他两个更糟。在中调整表格视图宽度 -viewWillAppear:首先,这是不可靠的,在-viewWillAppear:调用后,超级视图或父视图控制器可能会进一步调整表视图框架。当然,您可以-setFrame:为UITableView 子类化和重写,就像我在这里为UITableViewCells所做的一样。但是,对UITableViewCells进行子类化是一种非常普遍,轻便和Apple的方式。其次,如果您的UITableView具有backgroundView,则不希望将backgroundView一起缩小。在缩小UITableView宽度的同时保持backgroundView宽度并不是一件容易的事,更不用说首先将子视图扩展到其Superview之外并不是一件很优雅的事情。自定义单元格渲染以伪造更窄的宽度为此,您必须准备带有水平边距的特殊背景图像,并且必须自己布置单元格的子视图以容纳边距。相比之下,如果您只是调整整个单元格的宽度,则自动调整大小将为您完成所有工作。

守着星空守着你

要在不提供设置变量方法的Swift中进行此操作,您必须覆盖的setter frame。原帖(至少在我找到它)在这里override var frame: CGRect {    get {        return super.frame    }    set (newFrame) {        let inset: CGFloat = 15        var frame = newFrame        frame.origin.x += inset        frame.size.width -= 2 * inset        super.frame = frame    }}

萧十郎

我发现接受的解决方案在旋转时不起作用。为了实现具有固定宽度和灵活边距的UITableViewCells,我将上述解决方案调整为以下内容:- (void)setFrame:(CGRect)frame {    if (self.superview) {        float cellWidth = 500.0;        frame.origin.x = (self.superview.frame.size.width - cellWidth) / 2;        frame.size.width = cellWidth;    }    [super setFrame:frame];}每当设备旋转时都会调用该方法,因此单元将始终居中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS