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

arc*_*all 3 objective-c uitableview ios swift

我试图用左右边距/插图制作UITableViewCell.我以前用Objective-C使用以下代码制作了这个:

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

此代码不会直接转换为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
    }
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 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
    }
}
Run Code Online (Sandbox Code Playgroud)

没有必要额外的财产.您newValue在setter中使用隐式值.