我正在尝试使用左右边距/内插来制作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
}
}
答案 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)