UIView里面自定义UITableViewCell错误的宽度/高度

Posted

技术标签:

【中文标题】UIView里面自定义UITableViewCell错误的宽度/高度【英文标题】:UIView inside custom UITableViewCell wrong width / height 【发布时间】:2015-09-23 09:07:56 【问题描述】:

我遇到了以下问题。我有一个自定义类 UITableViewCell,里面有一些 UIView,它们充当图表视图的容器。 问题是如果我执行以下操作:

self.upperLeftChart = XYPieChart(frame: CGRectMake(0, 0, self.upperLeftContainer.frame.width, self.upperLeftContainer.frame.height))
self.upperLeftContainer.addSubview(self.upperLeftChart)

Chartview 与整个 UITableViewCell 一样大,而不是我的容器的大小。 如果我打印容器的大小

NSLog("\(self.upperLeftContainer.frame.width) / \(self.upperLeftContainer.frame.height)")

它打印:320.0 / 568.0 这是错误的。我的容器大约占整个细胞的四分之一。

我想这与我的 Autolayout + Constraints 有关。如果我将大小设置为 120x120px 硬编码,效果很好。

有什么技巧可以通过自动布局和约束来获得 UIView 的真实宽度和高度?

【问题讨论】:

顺便说一句,upperLeftContainer 的大小是多少? 【参考方案1】:

你需要做的是覆盖

override func layoutSubviews() 
    super.layoutSubviews()
    self.upperLeftCart.frame = CGRectMake(0, 0, self.upperLeftContainer.frame.width, self.upperLeftContainer.frame.height)

这样每次单元格调整大小时它都会改变视图的框架

【讨论】:

不完全一样,你只需要初始化一次view,设置几次frame,layoutSubviews会被调用不止一次

以上是关于UIView里面自定义UITableViewCell错误的宽度/高度的主要内容,如果未能解决你的问题,请参考以下文章

使用 iCarousel 时,我的自定义 UIView 显示但里面啥都没有?

使用 tapGesture 自定义 UIView

在自定义 UIView 类中从 UIView 快速创建 IBoutlet [重复]

如何在 ViewController 中调用所有自定义 UIView 的方法?

像 UIPopoverController 中的方式一样关闭自定义 UIView

如何在使用它的 ViewController 上调整自定义(在单独的文件中创建)UIView 高度?