根据 UITableViewCell 中 UIImageView 中的图像设置 UIView 宽度
Posted
技术标签:
【中文标题】根据 UITableViewCell 中 UIImageView 中的图像设置 UIView 宽度【英文标题】:Set UIView width based off of image in UIImageView in UITableViewCell 【发布时间】:2016-06-15 23:56:51 【问题描述】:我有一个 UITableViewCell 的子类,在单元格中我有一个 UIImageView,其内容模式设置为 ScaleAspectFit。 UIImageView 具有静态高度并使用相等的前导和尾随约束,它还具有顶部约束。
在 UIImageView 的正下方,我有一个 UIView,我希望它的宽度等于缩放图像的宽度。理想情况下,我也想设置一个最小宽度。
我似乎无法在图像视图中获取图像的大小。
import UIKit
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
extension ViewController: UITableViewDataSource, UITableViewDelegate
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 1
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
guard let cell = tableView.dequeueReusableCellWithIdentifier("sampleCell") as? SampleCellTableViewCell else
return UITableViewCell()
return cell
// 单元格
class SampleCellTableViewCell: UITableViewCell
@IBOutlet weak var theImage: UIImageView!
@IBOutlet weak var theView: UIView!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
override func setSelected(selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
到目前为止,我已经尝试了很多东西,所以如果你有一个新的想法,我希望你有一个新的想法,谢谢。
【问题讨论】:
你具体尝试了什么? 【参考方案1】:解决方案最终是向视图添加宽度约束,然后为其创建一个出口并将其常量值更改为图像视图中缩放图像的宽度。
// 单元格
class SampleCellTableViewCell: UITableViewCell
@IBOutlet weak var theImage: UIImageView!
@IBOutlet weak var theView: UIView!
@IBOutlet weak var theViewWidthConstraint: NSLayoutConstraint!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
override func setSelected(selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
// cellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
guard let cell = tableView.dequeueReusableCellWithIdentifier("sampleCell") as? SampleCellTableViewCell else
return UITableViewCell()
cell.theViewWidthConstraint.constant = cell.theImage.frameForImageInImageViewAspectFit().width
return cell
您可以在此处找到 frameForImageInImageViewAspectFit() 方法定义:https://***.com/a/36428745/4096655
【讨论】:
以上是关于根据 UITableViewCell 中 UIImageView 中的图像设置 UIView 宽度的主要内容,如果未能解决你的问题,请参考以下文章
根据选择更改 UITableViewCell 中按钮的背景颜色
UITableviewCell 高度根据 In 侧另一个 UITableviewCell 高度
根据 UITableViewCell 中 UIImageView 中的图像设置 UIView 宽度