在UICollectionViewCell中需要设置它相互交叉的边框效果(连接类型)

时间:2017-08-18 08:18:48

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我实现了UICollectionViewCell。现在我需要设置边界效果,其中单元格与交叉点交叉。

这是图像,我需要像这样设置边框..

enter image description here

我试着给出了细胞边界但输出左边和出现右侧边框,这不是我想要的输出。 所以我的输出看起来像这样。 (输出错误)

enter image description here

所以请帮助我..

2 个答案:

答案 0 :(得分:1)

注意:根据问题所有者与我之间的讨论得出以下答案。

您需要正确设置collectionViewFlowLayout以获得所需的输出。请尝试以下代码:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
    // All the values are changable according to your needs.
    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.sectionInset = UIEdgeInsets.zero
    layout.minimumInteritemSpacing = 1
    layout.minimumLineSpacing = 2
    return CGSize(width: (self.collectionView.frame.width / 2) - 1 , height:(self.collectionView.frame.height / 3) - 1)
}

更新1 :计算布局包括navigationBarStatusBar

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
    // All the values are changable according to your needs.
    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.sectionInset = UIEdgeInsets.zero
    layout.minimumInteritemSpacing = 1
    layout.minimumLineSpacing = 2
    return CGSize(width: (self.collectionView.frame.width / 2) - 1 , height:(((self.view.frame.height - ((navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height)) / 3) - 1))
}

您可能需要在viewDidLayoutSubviewsviewWillLayoutSubviews

中验证collectionView框架
 override func viewDidLayoutSubviews() {
 collectionView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
}

以下链接可帮助您了解collectionViewFlowLayout

Enforce collectionView to have only 2 rows

uicollectionview remove top padding

Adjust cellsize for fit all screens?

注意:以后,请清楚地发布您的问题及相关代码和状态问题。

答案 1 :(得分:0)

设置边框不会产生所需的结果。 enter image description here

cgfloat intcellSize =([[UIScreen mainScreen] bounds] .size.width / 3)-0.8;

现在在这个方法里面定义它:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
 if ((mutArrContact.count%3) == 0) {

            return (mutArrContact.count/3) * intcellSize ;
        }
        else
        {
            return ((mutArrContact.count/3) * intcellSize)+ intcellSize;
        }

}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    return CGSizeMake (intcellSize,intcellSize);
}

这是用于取代具有所需结果的3个细胞。