我尝试使用代码在屏幕上呈现简单的集合视图。 但是contentview中的子视图没有正确地使用
我使用Xcode 7.3.1在swift 2.3中编码 这是发生了什么事?
这是代码
import Foundation
class CustomerOverdueViewController : BaseViewController , UICollectionViewDelegateFlowLayout {
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var lblTotalOverdue: UILabel!
@IBOutlet weak var lblInvestedFunds: UILabel!
@IBOutlet weak var segmentedControl: UISegmentedControl!
var rangeArray = NSArray()
var selectedOverdueIndex = 0
var selectedColor = UIColor()
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Customer Overdue"
}
@IBAction func segValueChanged(sender: UISegmentedControl) {
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 6
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let reuseIdentifier = String("CustomerOverdueCollectionViewCell")
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomerOverdueCollectionViewCell
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
return CGSize(width: collectionView.frame.size.width/2 - 10, height: collectionView.frame.size.height/3 - 10)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets
{
return UIEdgeInsets(top: 5, left: 5, bottom: 0, right: 5)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat
{
return 10.0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat
{
return 10.0
}
}
答案 0 :(得分:1)
似乎在初始调用中,在首次绘制表时使用数据(来自ViewWillLoad)。但是,刷新数据时,不会重新计算约束。
通常这是通过setNeedsLayout和/或layoutIfNeeded完成的 你可以尝试:
[view layoutIfNeeded];
答案 1 :(得分:1)
最后我得到了解决方案
覆盖自定义单元格中的layoutSubviews
override func layoutSubviews() {
super.layoutSubviews()
self.layoutIfNeeded()
}
并在cellForItemAtIndexpath
中添加以下行 cell.setNeedsLayout()
cell.layoutIfNeeded()