如何在UITableViewCell或UICollectionViewCell中获取子视图的计算大小

如何在UITableViewCell或UICollectionViewCell中获取子视图的计算大小,uitableview,ios8,autolayout,uicollectionviewcell,Uitableview,Ios8,Autolayout,Uicollectionviewcell,我正在尝试将渐变层添加到自定义UITableViewCell(或collectionViewCell)中的UILabel。我在interface builder中将一些约束设置为UILabel,以便根据内容调整其大小。但我不知道如何获得单元格子视图的正确帧大小 我尝试了layoutSubviews,但它被调用了多次,在我的例子中调用了两次。所以它添加了两个渐变层,第一个用于非计算帧,一个用于计算帧 我为UITableView和UICollectionView尝试了cellForItemAtInd

我正在尝试将渐变层添加到自定义
UITableViewCell
(或collectionViewCell)中的
UILabel
。我在interface builder中将一些约束设置为
UILabel
,以便根据内容调整其大小。但我不知道如何获得单元格子视图的正确帧大小

我尝试了
layoutSubviews
,但它被调用了多次,在我的例子中调用了两次。所以它添加了两个渐变层,第一个用于非计算帧,一个用于计算帧

我为
UITableView
UICollectionView
尝试了
cellForItemAtIndexPath
。它也不起作用


如何或何时在
UITableViewCell
UICollectionView
中获得子视图的正确帧大小?

您可以始终调整添加的渐变层的大小,或将其删除,然后在
layoutSubviews
中再次添加。这是不一致的。有些单元格使用非计算帧,有些单元格使用计算帧。这种变化也是显而易见的;我看到渐变层在移动,所以在这种情况下,请尝试使用
UIView
仅包含一层,这是渐变层类(
CAGradientLayer
)。视图的图层由
UIView
layerClass
方法返回。将此视图设置为表格单元格的
backgroundView
,它应该自动调整大小添加为背景视图对我不起作用,因为我不想向其中一个子视图(即
UILabel
)添加渐变,我不需要
UITableViewCell
的大小,我需要它的子视图,所以在调用super resize added
CALayer
和gradient后,使用从
UILabel
layoutSubview
派生的您自己的类