如何调整 UITableViewRowAction 的大小以适应自定义大小的 tableViewCell? - Swift 3
How to resize a UITableViewRowAction to fit custom sized tableViewCell? - Swift 3
在我的应用程序中,我自定义 TableViewCell
以像卡片一样显示。我还为这些单元格实现了自定义 UITableViewRowActions
。但是动作看起来很奇怪,因为我添加了一个层使单元格看起来像一张浮动卡片。
Here's what it looks like
这是我的 cellForRowAt
函数的代码。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "someCell", for: indexPath) as! CustomCell
cell.delegate = self
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
let whiteRoundedView: UIView = UIView(frame: CGRect(x: 10, y: 8, width: self.view.frame.size.width - 20, height: cell.frame.size.height - 20))
whiteRoundedView.layer.backgroundColor = CGColor(colorSpace: CGColorSpaceCreateDeviceRGB(), components: [1.0, 1.0, 1.0, 0.9])
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.cornerRadius = 2.0
whiteRoundedView.layer.shadowOffset = CGSize(width: -1, height: 1)
whiteRoundedView.layer.shadowOpacity = 0.2
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
cell.updateCell()
return cell
}
还有我的 UITableViewRowAction
函数。预警:我正在使用这个 SwipeCellKit 存储库
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
if orientation == .left {
guard isSwipeRightEnabled else { return nil }
let completeAction = SwipeAction(style: .default, title: "Complete") { (action, index) in
print("complete!")
}
completeAction.backgroundColor = .green
return [completeAction]
} else {
let deleteAction = SwipeAction(style: .destructive, title: "Delete") { (action, index) in
print("delete")
}
return [deleteAction]
}
}
有什么方法可以调整 UITableViewRowAction
的大小以适应单元格的模型吗?
如果不对框架进行一些更改,目前是不可能的。
我确实有计划向 SwipeTableViewCellDelegate
添加一些方法,这些方法会在显示之前公开每个 UIButton
,并且随着滑动继续发生。我想这会给你足够的灵活性来实现你的布局。
这期间在您自己的分叉上应该不会太难。具体看SwipeTableViewCell
,在configureActionView
方法里面。它创建了 SwipeActionsView
,其中有一个 buttons
属性 包含滑动 UIButton
子类。您只需要将它们公开给您的应用即可。
如果有人在 2019 年仍在寻找解决方案,您可以使用不可见的 unicode 字符来设置宽度。
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"\u2060\t\t\t\u2060" handler: [self handler]];
您可以在 viewDidLoad() 中添加这段代码,它会相应地创建一个自定义行
tableView.rowHeight = 80.0
在我的应用程序中,我自定义 TableViewCell
以像卡片一样显示。我还为这些单元格实现了自定义 UITableViewRowActions
。但是动作看起来很奇怪,因为我添加了一个层使单元格看起来像一张浮动卡片。
Here's what it looks like
这是我的 cellForRowAt
函数的代码。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "someCell", for: indexPath) as! CustomCell
cell.delegate = self
cell.backgroundColor = .clear
cell.contentView.backgroundColor = .clear
let whiteRoundedView: UIView = UIView(frame: CGRect(x: 10, y: 8, width: self.view.frame.size.width - 20, height: cell.frame.size.height - 20))
whiteRoundedView.layer.backgroundColor = CGColor(colorSpace: CGColorSpaceCreateDeviceRGB(), components: [1.0, 1.0, 1.0, 0.9])
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.cornerRadius = 2.0
whiteRoundedView.layer.shadowOffset = CGSize(width: -1, height: 1)
whiteRoundedView.layer.shadowOpacity = 0.2
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
cell.updateCell()
return cell
}
还有我的 UITableViewRowAction
函数。预警:我正在使用这个 SwipeCellKit 存储库
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
if orientation == .left {
guard isSwipeRightEnabled else { return nil }
let completeAction = SwipeAction(style: .default, title: "Complete") { (action, index) in
print("complete!")
}
completeAction.backgroundColor = .green
return [completeAction]
} else {
let deleteAction = SwipeAction(style: .destructive, title: "Delete") { (action, index) in
print("delete")
}
return [deleteAction]
}
}
有什么方法可以调整 UITableViewRowAction
的大小以适应单元格的模型吗?
如果不对框架进行一些更改,目前是不可能的。
我确实有计划向 SwipeTableViewCellDelegate
添加一些方法,这些方法会在显示之前公开每个 UIButton
,并且随着滑动继续发生。我想这会给你足够的灵活性来实现你的布局。
这期间在您自己的分叉上应该不会太难。具体看SwipeTableViewCell
,在configureActionView
方法里面。它创建了 SwipeActionsView
,其中有一个 buttons
属性 包含滑动 UIButton
子类。您只需要将它们公开给您的应用即可。
如果有人在 2019 年仍在寻找解决方案,您可以使用不可见的 unicode 字符来设置宽度。
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"\u2060\t\t\t\u2060" handler: [self handler]];
您可以在 viewDidLoad() 中添加这段代码,它会相应地创建一个自定义行
tableView.rowHeight = 80.0