收藏视图定位像 instagram app swift

Posted

技术标签:

【中文标题】收藏视图定位像 instagram app swift【英文标题】:Collection View positioning like instagram app swift 【发布时间】:2017-03-14 12:36:47 【问题描述】:

我一直在编写像 instagram 这样的应用程序来学习 swift 和 ios 编程。现在我创建了 UIStackView,它是一个顶部栏,以及 3 个底部按钮,用于发布请求和更改图像。

我遇到的问题 - 我无法在 CollectionView 上设置位置、宽度和删除单元格间距。我想要: 所有设备上的 CollectionView 全宽 图像之间的单元格间距 = 1 CollectionView 应位于顶部栏和底部按钮全高之间

我现在有什么?

我的模拟器屏幕:http://prntscr.com/d1mmu1

我的故事板屏幕:http://prntscr.com/d1mnhr

我曾尝试使用 StoryBoard 执行此操作,更改了所有参数,但还没有达到我的目标。 如果我向 CollectionView 和应用程序的主视图添加相等的高度,它会占用所有屏幕,并且在滚动后它会消失...... 如何在其上设置该位置和宽度、高度和单元格间距?

here is a code of my viewcontroller for CollectionView - 

// MARK: - UICollectionViewDataSource 协议

// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return self.items.count


// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    // get a reference to our storyboard cell
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell

    // Use the outlet in our custom class to get a reference to the UILabel in the cell
    cell.imageView.image = UIImage(named: "main/p\(self.items[indexPath.item].code)/main/main.jpg")
    print("main_card_images/p\(self.items[indexPath.item].code)/main/main")
    return cell


// MARK: - UICollectionViewDelegate protocol

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    // handle tap events
    print("You selected cell #\(indexPath.item)!")
    print(self.items[indexPath.item])


override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    let yourNextViewController = (segue.destination as! ViewControllerCard)
    let indexPath = collectionView.indexPath(for: sender as! UICollectionViewCell)
    yourNextViewController.mainCardImage = self.items[(indexPath?.item)!]

【问题讨论】:

查看我的答案***.com/questions/40325327/… 【参考方案1】:

试试这个代码。

注意:以下代码仅适用于在所有 iPhone 型号上测试的 4 列布局。如果您想要不同的列数。您需要调整单元格的宽度和高度或查看我的其他答案@ 987654321@

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize 
    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.sectionInset = UIEdgeInsets(top: 3, left: 3, bottom: 3, right: 3)
    layout.minimumInteritemSpacing = 03
    layout.minimumLineSpacing = 03
    layout.invalidateLayout()

    return CGSize(width: ((self.view.frame.width/4) - 4), height:((self.view.frame.width / 4) - 4));

输出:

【讨论】:

以上是关于收藏视图定位像 instagram app swift的主要内容,如果未能解决你的问题,请参考以下文章

像Instagram这样的图像滑块?

如何创建一个像 Instagram 主页一样的页面视图控制器,它也可以滚动标签栏?

UISearchController 像 Instagram 探索选项卡

如何像 instagram 一样快速加载图像

像 Instagram iPhone 应用程序一样向右滑动时导航弹出视图。我如何实现这一点?

将收藏夹功能添加到 iPhone App iphone sdk