【问题标题】:UIView inside custom UITableViewCell wrong width / heightUIView里面自定义UITableViewCell错误的宽度/高度
【发布时间】: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 的大小是多少?

标签: ios swift uitableview uiview constraints


【解决方案1】:

你需要做的是覆盖

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

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

【讨论】:

  • 不完全一样,你只需要初始化一次view,设置几次frame,layoutSubviews会被调用不止一次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多