在Swift中设置带边距的UITableViewCell框架

时间:2017-02-07 16:05:09

标签: ios objective-c swift uitableview

我正在尝试使用左右边距/内插来制作UITableViewCell。我过去使用Objective-C使用以下代码完成了这个:

- (void)setFrame:(CGRect)frame {
    frame.origin.x += 25;
    frame.size.width -= 2 * 25;
    [super setFrame:frame];
}

此代码不会直接转换为Swift,因为现在我必须覆盖公共框架变量,但将此代码放在该变量的setter中无效。如何在Swift中使用这个或类似的技术来显示边距?

这是我尝试过的Swift:

private var otherFrame: CGRect = CGRectZero
override public var frame: CGRect {
    get {
        return otherFrame
    }
    set {
        otherFrame = frame
        otherFrame.origin.x += 25
        otherFrame.size.width -= 2 * 25
    }
}

2 个答案:

答案 0 :(得分:6)

Objective-C代码的直接翻译将是:

override var frame: CGRect {
    get {
        return super.frame
    }
    set {
        var frame = newValue
        frame.origin.x += 25
        frame.size.width -= 2 * 25

        super.frame = frame
    }
}

不需要额外的财产。您在setter中使用隐式值newValue

答案 1 :(得分:0)

你可以通过这种方式告诉你单元格不遵循tableView的边距:

cell.preservesSuperviewLayoutMargins = false

以这种方式设置单元格的边距:

cell.layoutMargins = UIEdgeInsets(top: 0, left: 25, bottom: 0, right: 25)