如何知道customCollectionViewLayout中Label的高度?

时间:2016-08-10 06:37:15

标签: ios objective-c uicollectionview uicollectionviewlayout

我将UICollectionViewLayout子类化,并实施了所有必要的方法,例如PrepareLayoutlayoutAttributesForItemAtIndexPathlayoutAttributesForElementsInRect。以前UICollectionViewCell的高度保持不变,但现在随着要求的变化,我想根据标签高度调整单元格的高度。 我怎样才能在我的UICollectionViewLayout课程中获得标签文字?

赞赏任何类型的提示或帮助。

2 个答案:

答案 0 :(得分:0)

我已使用此功能在VC的use zabbix; DROP TABLE graph_discovery; CREATE TABLE `graph_discovery` ( `graphid` bigint unsigned NOT NULL, `parent_graphid` bigint unsigned NOT NULL, PRIMARY KEY (graphid) ) ENGINE=InnoDB; 扩展名中定义cellWidthsizeForItemAtIndexPath

根据设备的动态高度和宽度定义UICollectionViewDelegateFlowLayout

cellWidth

是相应返回动态cellWidth和height的函数。 我需要宽度和高度相同的尺寸,在我需要7行和7列的情况下,我将其除以7,您可以根据单行中单元格的需要进行更改。

let cellWidth = UIScreen.mainScreen().bounds.width / 7 - 1

答案 1 :(得分:0)

知道标签,文本和字体的宽度,您可以使用此NSString方法:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context

要使用的参数:

size - 宽度应该等于标签的宽度,作为放置CGFLOAT_MAX的高度。

options - 只需使用NSStringDrawingUsesLineFragmentOrigin

attributes - 包含密钥NSFontAttributeName的字典,值是您将用于此标签的字体

context - 你可以在这里通过

返回值将是CGRect,其中您只取高度,这将是您的标签在其中包含文本的单元格中的高度。