自定义 UITableViewCell 中的 UIImageView 在单击时调整大小
Posted
技术标签:
【中文标题】自定义 UITableViewCell 中的 UIImageView 在单击时调整大小【英文标题】:UIImageView in custom UITableViewCell resizing upon click 【发布时间】:2019-06-27 10:36:40 【问题描述】:我有一个自定义 UI 表格视图单元格,单击它后,单元格内的 UIImageView 会调整大小,并且在 cellForRowAt 中定义的先前样式(例如圆角)在单击时丢失。请看附图。
引用 cellForRowAt 中的个人资料图像视图的代码
cell.profileImageView.layer.masksToBounds = false
cell.profileImageView.layer.cornerRadius = cell.profileImageView.frame.height/2
cell.profileImageView.clipsToBounds = true
来自 didSelectRow 的代码
let message = downloadedmessages![indexPath.row] as! ALMessage
let displayVC : ChatViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "chatViewController") as! ChatViewController
displayVC.sender = msgUser(senderId: ALUserDefaultsHandler.getUserId(), displayName: ALUserDefaultsHandler.getDisplayName())
displayVC.reciever = msgUser(senderId: message.to, displayName: message.name)
navigationController?.pushViewController(displayVC, animated: true)
【问题讨论】:
你能添加一些代码吗? 请加didSelectRowAt()
代码!
【参考方案1】:
尝试添加profileImageView
的contentMode
,即
profileImageView.contentMode = .scaleAspectFit
另外,在.xib
中添加正确的height
和width
constraints
profileImageView
。
注意: tableView(_:cellForRowAt:)
不是添加单元格的 layer
属性的正确位置,以防您重复使用同一个单元格。必须在awakeFromNib()
方法中添加,即
override func awakeFromNib()
super.awakeFromNib()
self.profileImageView.layer.masksToBounds = false
self.profileImageView.clipsToBounds = true
self.profileImageView.contentMode = .scaleAspectFit
override func layoutSubviews()
super.layoutSubviews()
UIImageView().contentMode = .scaleAspectFit
self.profileImageView.layer.cornerRadius = cell.profileImageView.frame.height/2
【讨论】:
以上是关于自定义 UITableViewCell 中的 UIImageView 在单击时调整大小的主要内容,如果未能解决你的问题,请参考以下文章
在 Storyboard 中设计的自定义 UITableViewCell 中的自定义 UIView
ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController