在開(kāi)發(fā)中喧枷,遇到一個(gè)tableViewCell嵌套UICollectionView的布局,在同時(shí)設(shè)置了UICollectionView的高度和itemSize后一直報(bào)一個(gè)錯(cuò)誤
The relevant UICollectionViewFlowLayout instance is ...xxxxx
原因是同一個(gè)float值給NSLayoutConstraint
后渲染出來(lái)的frame是自動(dòng)取整了隧甚,而itemSize則沒(méi)有取整,只要使用nearbyintf
將值取整后再賦值給約束和item就好了
@interface xxxTableViewCell() <UICollectionViewDataSource,UICollectionViewDelegate>
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *collectionViewHeightConstraint;
@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
@end
@implementation xxxTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
layout.sectionInset = UIEdgeInsetsZero;
layout.minimumInteritemSpacing = 0.0;
layout.minimumLineSpacing = 10;
[self.collectionView setDataSource:self];
[self.collectionView setDelegate:self];
[self.collectionView setCollectionViewLayout:layout];
[self.collectionView setContentInset:UIEdgeInsetsMake(0, 20, 0, 0)];
[self.collectionView registerNib:[UINib nibWithNibName:@"xxxx" bundle:nil] forCellWithReuseIdentifier:@"xxx"];
self.collectionView.scrollEnabled = YES;
self.collectionViewHeightConstraint.constant = self.collectinoViewHeight;
}
- (CGFloat)collectinoViewHeight {
CGFloat realHeight = xxxx;
return nearbyintf(realHeight);
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(100, self.collectinoViewHeight);
}
@end
常見(jiàn)取整函數(shù)
ceilf
: 向上取整,50.1 -> 51, 50.9 -> 51
floorf
:向下取整帽借,50.1 -> 50, 50.9 -> 50
nearbyintf
:四舍五入取整:50.1 -> 50, 50.9 -> 51