ios - 基于UILabel的UICollectionViewCell AutoLayout动态高度
<p><p>我正在使用 UICollectionViewCell 的自动布局和大小类。所以我们的想法是制作一个与 Instagram 相似的 UI。 </p>
<p>问题是我无法完全理解如何添加正确的自动布局,因为似乎添加缺少的约束并没有神奇地做到这一点。</p>
<p> <img src="/image/aD2PM.jpg" alt="enter image description here"/> </p>
<p>当我添加约束时,即使没有警告,它总是在目标输出上显示“将尝试通过打破约束来恢复”。目标是根据 iphone 类型使配置文件单元动态,并根据 bioLabel 动态高度。现在我把它设为静态,这是非常错误的,因为当我使用这种方法时</p>
<pre><code>systemLayoutSizeFittingSize:UILayoutFittingCompressedSize
</code></pre>
<p>它总是返回零,我猜是因为自动布局约束放错了位置。你能告诉我如何根据它的约束计算单元格的大小吗?我已经在 github 上创建了这个项目,任何帮助将不胜感激!</p>
<p> <a href="https://github.com/xeravim/CollectionViewAutoLayout" rel="noreferrer noopener nofollow">CollectionViewAutoLayout</a> </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我下载了您的代码并发现了问题。看,您只需在 collectionView:layout:sizeForItemAtIndexPath 方法中替换这行代码即可解决您的问题。</p>
<pre><code>- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0) {
CGFloat height = .bounds.size.width andFont:]];
return CGSizeMake(.bounds.size.width, 150 + height);
}
else {
return CGSizeMake(((.bounds.size.width - 2.0) / 3.0), ((.bounds.size.width - 4.0) / 3.0));
}
}
</code></pre>
<p>添加此方法动态计算高度。</p>
<pre><code> #pragma mark - Height Calculation Method
- (CGFloat)findHeightForText:(NSString *)text havingMaximumWidth:(CGFloat)widthValue andFont:(UIFont *)font {
CGSize size = CGSizeZero;
if (text) {
//iOS 7
CGRect frame = ;
size = CGSizeMake(frame.size.width, frame.size.height + 1);
}
return size.height;
}
</code></pre>
<p>更换一次并在所有设备上进行测试,然后告诉我...希望对您有所帮助:)</p></p>
<p style="font-size: 20px;">关于ios - 基于UILabel的UICollectionViewCell AutoLayout动态高度,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/29933364/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/29933364/
</a>
</p>
页:
[1]