collectionViewLayout初始化

时间:2016-03-30 20:20:24

标签: ios swift storyboard uicollectionview

我在故事板中初始化了我的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()

设置的故事板截图: enter image description here

1 个答案:

答案 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函数被调用。