仅在 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

【讨论】:

不,不要将此代码放入drawRectlayoutSubviews 是存放此类代码的好地方。 drawRect 应该只用于绘制视图的内容。这段代码都没有绘制视图的内容。此外,这三行中的两行只需要调用一次,而不是一遍又一遍。只有当视图的框架发生变化时才应该调用第一行。使用drawRect 可能有效,但这并不意味着它是正确的解决方案。将代码放在它所属的地方,而不是它恰好可以工作的地方。 但是如何将单元格图像放置在 viewDidLayoutSubviews 中? @amit ...在“viewDidLayoutSubviews”方法中对ViewController的子视图进行分层操作。对于自定义单元格,在“drawRect”或“layoutSubviews”方法中进行 @rmaddy .... 如果我输入“layoutSubviews”,代码将不起作用,视图不可见

以上是关于仅在 Swift 3 中,圆形 UIImage 在 UITableViewCell 中消失的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的圆形图像 swift

如何在 Swift 中设置半圆 UIImage 像这个截图

Swift:如何将自定义 UICollectionViewCell 设置为圆形?

Swift开发教程--有关图片处理的一些有用函数

如何在 swift 3 中使用 UIImage 数组为零?

无法在 Swift 中使用时间延迟为 UIImage 设置动画