一對一直播系統原始碼,UICollectionViewCell自適應文字寬度

zhibo系統開發發表於2021-11-04

一對一直播系統原始碼,UICollectionViewCell自適應文字寬度實現的相關程式碼

自定義cell

#pragma mark — 自定義cell
 
#import "SelfSizingCollectCell.h"
#import "Masonry.h"
#define itemHeight 60
@implementation SelfSizingCollectCell
- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        self.contentView.backgroundColor = [UIColor redColor];
        // 用約束來初始化控制元件:
        self.textLabel = [[UILabel alloc] init];
        self.textLabel.textAlignment =NSTextAlignmentCenter;
        self.textLabel.backgroundColor = [UIColor greenColor];
        [self.contentView addSubview:self.textLabel];
#pragma mark — 如果使用CGRectMake來佈局,是需要在preferredLayoutAttributesFittingAttributes方法中去修改textlabel的frame的
       // self.textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 30)];
 
#pragma mark — 如果使用約束來佈局,則無需在preferredLayoutAttributesFittingAttributes方法中去修改cell上的子控制元件l的frame
        [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
           // make 代表約束:
            make.top.equalTo(self.contentView).with.offset(0);
            make.left.equalTo(self.contentView).with.offset(0);
            make.height.equalTo(@(itemHeight/2));
            make.right.equalTo(self.contentView).with.offset(0);
        }];
    }  
    return self;
}
#pragma mark — 實現自適應文字寬度的關鍵步驟:item的layoutAttributes
- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes{
    
    UICollectionViewLayoutAttributes *attributes = [super preferredLayoutAttributesFittingAttributes:layoutAttributes];
    CGRect rect = [self.textLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, itemHeight) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14]} context:nil];
    rect.size.width +=8;
    rect.size.height+=8;
    attributes.frame = rect;
    return attributes;
    
}
@end


Controller中關鍵


#pragma mark — 檢視控制器中使用:(關鍵)
layout.estimatedItemSize = CGSizeMake(20, 60);  // layout約束這邊必須要用estimatedItemSize才能實現自適應,使用itemSzie無效

以上就是 一對一直播系統原始碼,UICollectionViewCell自適應文字寬度,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2840577/,如需轉載,請註明出處,否則將追究法律責任。

相關文章