我在故事板中初始化了我的UICollectionView,并决定以编程方式设置一些属性;但是,这些新属性赋值仅在我调用self.collectionView.reloadData()
时生效。
let layout = self.collectionView!.collectionViewLayout as! UICollectionViewFlowLayout
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 0;
故事板当前都已设置为零但是当我以编程方式分配它时,它会加载minimumInteritemSpacing
不为零。我试图在我的viewDidLoad()
函数中放置上述三行代码,然而,它们在初始加载时没有生效。
我也试过了:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
仍然没有运气,在调用0
之前,我不确定在初始加载时我还能尝试强制两个self.collectionView.reloadData()
。
答案 0 :(得分:0)
这对我来说听起来像是一个黑客攻击,我现在无法对它进行测试,所以它可能无法正常工作,但试试这个:
在viewDidLoad
:
let button = UIButton(type: UIButtonType.System) as! UIButton
button.frame = CGRectMake(100, 100, -100, -100)
button.setTitle("Test Button", forState: UIControlState.Normal)
button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
buttonObj.sendActionsForControlEvents(.TouchUpInside)
然后这个功能:
func buttonAction(sender:UIButton!)
{
self.collectionView.reloadData()
}
这将在框架外创建一个按钮(因此用户永远不会看到它)。然后它被viewDidLoad
中的最后一行按下,buttonAction
函数被调用。