我将UICollectionViewLayout
子类化,并实施了所有必要的方法,例如PrepareLayout
,layoutAttributesForItemAtIndexPath
,layoutAttributesForElementsInRect
。以前UICollectionViewCell
的高度保持不变,但现在随着要求的变化,我想根据标签高度调整单元格的高度。
我怎样才能在我的UICollectionViewLayout
课程中获得标签文字?
赞赏任何类型的提示或帮助。
答案 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;
扩展名中定义cellWidth
和sizeForItemAtIndexPath
。
根据设备的动态高度和宽度定义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,其中您只取高度,这将是您的标签在其中包含文本的单元格中的高度。