仅在 Swift 3 中,圆形 UIImage 在 UITableViewCell 中消失
Posted
技术标签:
【中文标题】仅在 Swift 3 中,圆形 UIImage 在 UITableViewCell 中消失【英文标题】:Round UIImage disappear in UITableViewCell only in Swift 3 【发布时间】:2016-10-18 04:37:34 【问题描述】:,在以前的版本中它工作正常,但我没有得到任何最佳解决方案。
这是我的代码:-
cell.imgView_User.layer.cornerRadius = cell.imgView_User.frame.width/2
cell. imgView_User.layer.masksToBounds = false
cell.imgView_User.clipsToBounds = true
cell.contentView.layoutIfNeeded()
【问题讨论】:
【参考方案1】:在我的情况下,以下是我的工作代码:
let imageview = cell.viewWithTag(105) as! UIImageView
imageview.layer.cornerRadius = imageview.frame.width/2
imageview.clipsToBounds = true
imageview.layer.borderWidth = 1.0;
imageview.layer.borderColor = UIColor.black.cgColor
我设置了边框颜色来识别我们的结果。
【讨论】:
【参考方案2】:手动设置cornerRadius
为我解决了这个问题。
例如:
imgView.layer.cornerRadius = 20.0;
仅当您知道图像视图的框架不受自动布局影响时才使用此选项。即固定大小。
【讨论】:
【参考方案3】:在 ios 10 中,所有图层操作都在 uiviewController 的 "viewDidLayoutSubviews" 或 "viewDidAppear" 方法中进行。
对于 UITableViewCell 或 collectionViewCell ,子类你的单元格并在“drawRect”方法中编写图层操作
对于您的情况,例如:
override func draw(_ rect: CGRect)
self.imgView_User.layer.cornerRadius = self.imgView_User.frame.width/2
self.imgView_User.layer.masksToBounds = false
self.imgView_User.clipsToBounds = true
【讨论】:
不,不要将此代码放入drawRect
。 layoutSubviews
是存放此类代码的好地方。
drawRect
应该只用于绘制视图的内容。这段代码都没有绘制视图的内容。此外,这三行中的两行只需要调用一次,而不是一遍又一遍。只有当视图的框架发生变化时才应该调用第一行。使用drawRect
可能有效,但这并不意味着它是正确的解决方案。将代码放在它所属的地方,而不是它恰好可以工作的地方。
但是如何将单元格图像放置在 viewDidLayoutSubviews 中?
@amit ...在“viewDidLayoutSubviews”方法中对ViewController的子视图进行分层操作。对于自定义单元格,在“drawRect”或“layoutSubviews”方法中进行
@rmaddy .... 如果我输入“layoutSubviews”,代码将不起作用,视图不可见以上是关于仅在 Swift 3 中,圆形 UIImage 在 UITableViewCell 中消失的主要内容,如果未能解决你的问题,请参考以下文章