Ios 自动布局-将UILabel调整为其Superview并调整其大小
我有一个Ios 自动布局-将UILabel调整为其Superview并调整其大小,ios,ios6,uilabel,uicollectionview,autolayout,Ios,Ios6,Uilabel,Uicollectionview,Autolayout,我有一个UICollectionView,其中包含一些单元格 每个单元格内都有一个UILabel。标签中有一个字母,它就像一块瓷砖一样。将更多单元格添加到UICollectionView时,UICollectionViewCells将按以下方式更改大小: -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionVi
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);
}
}
-(CGSize)collectionView:(UICollectionView*)collectionView
布局:(UICollectionViewLayout*)collectionViewLayout
SizeFormitedIndeXPath:(NSIndexPath*)indexPath{
//NSLog(@“%s”,函数);
NSLog(@“单词数组计数为:%i”,self.wordArray.count);
如果(self.wordArray.count,您可以设置如下布局约束:
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中的文本可以自动收缩(请参见)。因此,如果您最初将字体大小设置为最大单元格所需的大小,随着标签收缩,文本将随之收缩。在IB中重新创建此项工作正常。我能够将单元格中标签侧面所需的水平/垂直限制设为0/并正常工作。不幸的是,这不起作用k、 我在cell init方法中添加了“self.letterLabel.adjustsFontSizeToFitWidth=YES;”以及上述约束。奇怪的是,它对我有效。您是否在IB中设置了最小ScaleFactor
?奇怪的是,是。我认为问题更多的是应该在哪里设置它。我需要的是标签框与单元格框匹配,以及要缩放的标签。它应该在cells init中设置(如上所述),还是在“cellForItemAtIndexPath”中设置?您可以在interface builder中完成所有操作吗?我通过制作带视图的笔尖、在视图中放置标签以及设置自动布局约束(和最小比例因子)快速进行了测试如上所述。如果调整视图的大小,应该会看到标签随之调整大小,当标签对于文本来说太小时,文本也会随之调整大小。我如何在IB中设置这些约束?这是我第一次使用AutoLayout,并且缺少文档。