我正在尝试将UITableViewController
与XIB一起使用,而不是使用故事板,并使用默认样式:UITableViewCellStyleDefault
。我想将默认imageView
的{{1}}设置为cornerRadius
的宽度/ 2,但在imageView
期间,cellForRowAtIndexPath()
为0,0,0 ,0。
我记得在某处看到框架在添加到子视图之前不会更新。
如何获取imageView
? imageView.frame.size.width
正确显示行,但UITableView
为0。
cornerRadius
答案 0 :(得分:2)
下面的行不会布局任何用户界面,所以你现在无法获得任何类型的维度。
cell.imageView?.image = UIImage.init(imageLiteral: "\(indexPath.row).jpg")
一种方法是获取图像尺寸
let image = UIImage.init(imageLiteral: "\(indexPath.row).jpg")
cell.imageView?.image = image
let size = image.size
然后用这个尺寸做其余的事。
但是如果您的图像太大,那么您可能需要考虑相应调整大小的方法,因为它会根据实际图像的大小加载图像,并且可能与您预期的不同。
答案 1 :(得分:1)
实现目标的一种可能方式:
对UITableViewCell进行子类化,并覆盖layoutSubviews()
:
override func layoutSubviews() {
super.layoutSubviews()
self.imageView?.layer.cornerRadius = cell.imageView!.frame.size.width / 2
}