在转移到iOS 10,Swift 3,Xcode 8之前,以下代码正确应用了圆角。在tableView的主体中(_ tableView:UITableView,willDisplay cell:UITableViewCell,forRowAt indexPath:IndexPath):
$('#test').attr('data-mydata', "{'x-coord': 10}");
var myData = $('#test').data("mydata");
var x = myData['x-coord'];
console.log('x-coord: ' + x);
移动后,边框消失,因此前几个单元格没有圆角。单步调试使用调试器,调用方法时,子视图(someButton)高度错误。单元格使用布局约束并从故事板加载。
有人遇到过同样的事吗?
答案 0 :(得分:2)
好的,我已经解决了。如果有人有兴趣,这是解决方案:
或者:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.tableView.visibleCells.forEach { cell in
guard let `cell` = cell as? SomeCell else { return }
cell.someButton.layer.cornerRadius = ceil(cell.someButton.bounds.height/2)
}
}
或者仍然在tableView:willDisplay cell:中进行计算,只使用常量而不是依赖于子视图尺寸。
答案 1 :(得分:2)
您可以将其添加到Cell的自定义类中。请注意,从iOS 10开始,您需要调用layoutIfNeeded()来重新计算按钮大小。
override func layoutSubviews() {
super.layoutSubviews()
self.someButton.layoutIfNeeded()
self.someButton.layer.cornerRadius = self.someButton.bounds.size.height / 2
self.someButton.clipsToBounds = true
}
答案 2 :(得分:0)
您应该将super.awakeFromNib()添加到函数awakeFromNib()中。喜欢
func awakeFromNib() {
super.awakeFromNib()
self.someButton.layer.cornerRadius = floor(self.someButton.frame.height/2)
}