如何在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 addedCALayer
和gradient后,使用从UILabel
和layoutSubview
派生的您自己的类