ios - 如何在 Swift 中以编程方式更改 UICollectionViewCell 大小?

标签 ios swift uicollectionview uicollectionviewcell

我有一个带有分段控件UICollectionView来在数据之间切换。但是如何以编程方式更改 UICollectionViewCell 大小属性?然后我可以为每种数据类型适本地自定义每种样式。

例如将宽度更改为 520 点,高度更改为 100。我是 iOS 开发新手,对 CSS 很有经验:/

我知道如何在 Xcode 中执行此操作(显然),但不知道在 swift 中更改它的正确方法。非常感谢任何想法或反馈 (Y)

enter image description here

最佳答案

确保您的类符合 UICollectionViewDelegateFlowLayout (对于 swift4)

eg. class MyClass: UICollectionViewDelegateFlowLayout

Swift 3 之前

//Use for size
func collectionView(collectionView: UICollectionView,
        layout collectionViewLayout: UICollectionViewLayout,
        sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    }
//Use for interspacing
    func collectionView(collectionView: UICollectionView,
        layout collectionViewLayout: UICollectionViewLayout,
        minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
            return 1.0
    }

    func collectionView(collectionView: UICollectionView, layout
        collectionViewLayout: UICollectionViewLayout,
        minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
            return 1.0
    }

//对于 swift 3

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAt indexPath: IndexPath) -> CGSize {

}

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}

func collectionView(_ collectionView: UICollectionView, layout
    collectionViewLayout: UICollectionViewLayout,
                    minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}

//对于 swift 4

extension MyClass: UICollectionViewDelegateFlowLayout { 
        func collectionView(_ collectionView: UICollectionView,
                            layout collectionViewLayout: UICollectionViewLayout,
                            sizeForItemAt indexPath: IndexPath) -> CGSize {

        }

        func collectionView(_ collectionView: UICollectionView,
                            layout collectionViewLayout: UICollectionViewLayout,
                            minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
            return 1.0
        }

        func collectionView(_ collectionView: UICollectionView, layout
            collectionViewLayout: UICollectionViewLayout,
                            minimumLineSpacingForSectionAt section: Int) -> CGFloat {
            return 1.0
        }
    }

对 swift 3 使用与上面所示相同的代码,但确保 你的类符合协议(protocol) UICollectionViewDelegateFlowLayout

关于ios - 如何在 Swift 中以编程方式更改 UICollectionViewCell 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56016840/

相关文章:

objective-c - 将数组中的数据从一个 View 传输到另一个 View

ios - 从 UIImage 中移除 alpha channel

iOS:加载表格 View 时无法更新单元格中 View 的框架

swift - 快速获取 TableView 单元格内 uiswitch 值更改的标签值

ios - 提高 CollectionView 加载速度

ios - 使用 iOS SDK 通过 Amazon S3 存储和检索文件

ios - 是否可以在phonegap ios应用程序中使用iframe

ios - AVPlayer 不播放用 AVAudioRecorder 录制的文件 — Swift

ios - UICollectionView 与 NINetworkImageViews 重复图像

ios - 在 Swift 中使用属性观察器修改 UI 组件