2017-01-16 26 views
0

我正在爲日曆創建UIView子類,其中帶有流佈局的UICollectionView用於顯示日期。該代碼是:UICollectionViewFlowLayout minimumLineSpacing不適用於整個集合視圖 - Swift

override func draw(_ rect: CGRect) 
    { 
     super.draw(rect) 
     . 
     . 

     configureCalendarView() 
     . 
    } 



    func configureCalendarView() 
    { 
     cellWd = Double(self.frame.size.width)/7.0 

     let layout = UICollectionViewFlowLayout.init() 
     layout.minimumLineSpacing = 0.5 
     layout.minimumInteritemSpacing = 0.0 
     layout.sectionInset = UIEdgeInsetsMake(1, 0, 0, 0) 

     collectionV = UICollectionView.init(frame: CGRect(x: 0, y:90, width:self.frame.size.width, height:CGFloat(cellWd * 5 + 3.5)), collectionViewLayout: layout) 
     collectionV?.backgroundColor = self.backgroundColor 
     collectionV?.isScrollEnabled = false 
     collectionV?.register(DayCell.classForCoder(), forCellWithReuseIdentifier:reuseID) 
     collectionV?.dataSource = self; 
     collectionV?.delegate = self; 
     collectionV?.backgroundColor = calBgColor //lightgray 
     self.addSubview(collectionV!) 
    } 

一切工作正常,但最小線間距是不是有第二和第三排之間有任何影響。下面是截圖:

enter image description here

請告訴我去錯了嗎?任何幫助將不勝感激。謝謝 !

回答

0

layout.minimumLineSpacing = 0.5轉換爲0.5point * scale =像素。

因此,如果您使用的是3.0級以上的iphone 6+ 7+,那麼0.5將會是1.5像素。並在2倍的比例將是1個像素。 糾正此問題。添加:

layout.minimumLineSpacing = 1.0/[UIScreen mainScreen] .scale; 這樣你保證總是得到1像素的間距。

編輯:

layout.minimumLineSpacing = 1.0f; 

CGFloat collectionWidth = self.frame.size.width; 
CGFloat days = 7.0f; 
CGFloat spacing = 1.0f; 

CGFloat itemHeight = floorf((collectionWidth/days) - spacing; 
+0

感謝您的快速答覆。但它不工作。 – iAkki

+0

CGFloat(cellWd * 5 + 3.5))你必須修正這裏的計算,+ 5.0/screenScale – 2017-01-16 11:57:54

+0

也試着改變它,但它只是增加底部邊框,因爲collectionview的高度增加了(並且背景顏色是淺灰色) – iAkki

相關問題