我在超级视图中添加了一个uicollectionView,并决定像这样的单元格大小:
- (nonnull __kindof UICollectionViewCell *)collectionView:(nonnull UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath {
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
if(!cell){
cell = [[UICollectionViewCell alloc]init];
}
UIImageView *imageView = [[UIImageView alloc]initWithFrame:cell.bounds];
int r = arc4random_uniform(4);
NSString *imageName = [[NSString stringWithFormat:@"%d", r] stringByAppendingString:@".jpg"];
imageView.image = [UIImage imageNamed:imageName];
[cell addSubview:imageView];
cell.backgroundColor=[UIColor greenColor];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(180, 340);
}
- (NSInteger)collectionView:(nonnull UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 1500;
}
它在设备上看起来像这样:
我希望两个图像之间的空间与每行的填充和拖尾相等。
我还想在每一行之间设置空格。
我该怎么做?
答案 0 :(得分:2)
在故事板中,选择UICollectionView
,转到属性并更改插入。
编辑 通过代码
来做
添加UICollectionViewDelegateFlowLayout
class SecondVC: UIViewController , UICollectionViewDataSource, UICollectionViewDelegate , UICollectionViewDelegateFlowLayout
在func下面实现这个
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets{
return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
}
输出
在Obj-c
使用此功能
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section;
并返回UIEdgeInsetsMake(10, 10, 10, 10);
答案 1 :(得分:2)
func UIEdgeInsetsMake(_ top:CGFloat,_ left:CGFloat,_ bottom: CGFloat,_右:CGFloat) - > UIEdgeInsets
<强>描述强>
为按钮或视图创建边缘插入。
插图是一个边距 长方形。正值表示更接近中心的边距 矩形,而负值表示距离更远的边距 中心。
sectionInset 会为collectionview scetion的前导和尾随提供空间
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsetsMake(0, 4.0, 0, 4.0)
self.collectionView = UICollectionView(frame: coll_frame, collectionViewLayout: layout)
self.collectionView.delegate = self
self.collectionView.dataSource = self
self.collectionView.register(PreferenceCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: PreferenceCollectionViewCell.self))
self.addSubview(self.collectionView)
这两种方法会为每个单元格提供空间,首先你可以传递0.0并尝试它是如何工作的。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 6
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 6
}
答案 2 :(得分:0)
试试这个
传递CGSizeMake你想要的东西
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake((self.view.frame.size.width/5) , (self.view.frame.size.width/5) - 25);
}
答案 3 :(得分:-1)
为细胞提供细胞间距和细胞间距。它根据提供的值调整单元格。
希望这有帮助。