我有UICollectionView
,其中包含一些单元格。
每个单元格中包含一个UILabel
。在标签内是一个字母,它充当一个瓷砖(如此)。将更多单元格添加到UICollectionView
UICollectionViewCells
更改大小时,使用以下内容:
-(CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
// NSLog(@"%s",__PRETTY_FUNCTION__);
NSLog(@"the word array count is: %i",self.wordArray.count);
if (self.wordArray.count <= 5) {
return CGSizeMake(50,50);
} else if (self.wordArray.count <= 6 ) {
return CGSizeMake(30, 30);
} else if (self.wordArray.count <= 8 ) {
return CGSizeMake(10, 10);
} else {
return CGSizeMake(100,100);
}
}
我现在要做的是每次更改布局时重新调整单元格内的UILabel
。如何使用AutoLayout
将标签大小调整为单元格大小?另外,如何根据UILabel
尺寸更新字体大小?
答案 0 :(得分:0)
您可以设置类似以下布局约束的内容:
NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(label);
NSDictionary *insetMetrics = @{
@"left" : @(10.0f),
@"right" : @(10.0f),
@"top" : @(10.0f),
@"bottom" : @(10.0f)
};
[cell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(left)-[label]-(right)-|" options:kNilOptions metrics:insetMetrics views:viewDictionary]];
[cell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(top)-[label]-(bottom)-|" options:kNilOptions metrics:insetMetrics views:viewDictionary]];
如果设置了正确的属性,UILabel中的文本会自动缩小(请参阅UILabel Class Reference)。因此,如果您最初将字体大小设置为最大单元格所需的大小,则随着标签缩小,文本将随之缩小。
答案 1 :(得分:0)
在IB工作中重新创建这个。我能够将单元格本身标签边的水平/垂直约束设置为0 /需要,这样就可以了。