Ril*_*Dev 52 ios uicollectionview uicollectionviewcell swift
我有一个UICollectionView与segmented control数据之间切换.但是如何以编程方式更改UICollectionViewCell大小属性?然后我可以为每种数据类型适当地定制每种样式.
例如,将宽度更改为520点,将高度更改为100.我是iOS开发新手,对CSS有经验:/
我知道如何在Xcode中做(显然),但不知道在swift中更改它的正确方法.非常感谢任何想法或反馈(Y)
Sum*_*roi 97
确保符合您的类的UICollectionViewDelegateFlowLayout(对于swift4)
eg. class MyClass: UICollectionViewDelegateFlowLayout
Run Code Online (Sandbox Code Playgroud)
在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
}
Run Code Online (Sandbox Code Playgroud)
//对于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
}
Run Code Online (Sandbox Code Playgroud)
//对于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
}
}
Run Code Online (Sandbox Code Playgroud)
使用与上面显示的swift 3相同的代码,但只需确保您的类符合协议UICollectionViewDelegateFlowLayout
JPe*_*ric 61
斯威夫特3
如果您使用的是Swift 3,则不会调用来自@ sumit-oberoi的方法.为了使其正常工作,请进行以下调整:
符合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
}
Run Code Online (Sandbox Code Playgroud)注意这些变化:
_之前添加collectionViewNSIndexPath 改变为 IndexPathGau*_*ami 35
斯威夫特3
override func viewDidLoad() {
super.viewDidLoad()
let cellSize = CGSize(width:80 , height:80)
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical //.horizontal
layout.itemSize = cellSize
layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
layout.minimumLineSpacing = 1.0
layout.minimumInteritemSpacing = 1.0
myCollectionView.setCollectionViewLayout(layout, animated: true)
myCollectionView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
小智 7

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let itemsPerRow:CGFloat = 2
let padding:CGFloat = 20
let itemWidth = (collectionView.bounds.width / itemsPerRow) - padding:CGFloat
let itemHeight = collectionView.bounds.height - (2 * padding:CGFloat)
return CGSize(width: itemWidth, height: itemHeight)
}
Run Code Online (Sandbox Code Playgroud)
如果你使用Gaurav Rami的代码
let cellSize = CGSize(width:80 , height:80)
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical //.horizontal
layout.itemSize = cellSize
layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
layout.minimumLineSpacing = 1.0
layout.minimumInteritemSpacing = 1.0
myCollectionView.setCollectionViewLayout(layout, animated: true)
Run Code Online (Sandbox Code Playgroud)
并获取此消息" 快照未呈现的视图会导致空白快照.确保您的视图在屏幕更新后的快照或快照之前至少呈现过一次. "您应该在为集合视图设置视图布局时删除动画
myCollectionView.setCollectionViewLayout(layout, animated: false)
Run Code Online (Sandbox Code Playgroud)
然后消息将消失
| 归档时间: |
|
| 查看次数: |
79960 次 |
| 最近记录: |