UICollectionViewのセル間に線を引いて、その領域をまたぐようにするにはどうすればよいですか? 意図した出力は、私がやったことのベストは、各セル内の行を追加することで、このような何か:UICollectionView - セル間に線を描画します
です。どのようにスペースを通って線を接続するのですか?
UICollectionViewのセル間に線を引いて、その領域をまたぐようにするにはどうすればよいですか? 意図した出力は、私がやったことのベストは、各セル内の行を追加することで、このような何か:UICollectionView - セル間に線を描画します
です。どのようにスペースを通って線を接続するのですか?
私はあなたがこのように使用できる拡張を行った。ここで
collectionView.drawLineFrom(indexPathA, to: indexPathB, color: UIColor.greenColor())
は拡張したものです:
extension UICollectionView {
func drawLineFrom(
from: NSIndexPath,
to: NSIndexPath,
lineWidth: CGFloat = 2,
strokeColor: UIColor = UIColor.blueColor()
) {
guard
let fromPoint = cellForItemAtIndexPath(from)?.center,
let toPoint = cellForItemAtIndexPath(to)?.center
else {
return
}
let path = UIBezierPath()
path.moveToPoint(convertPoint(fromPoint, toView: self))
path.addLineToPoint(convertPoint(toPoint, toView: self))
let layer = CAShapeLayer()
layer.path = path.CGPath
layer.lineWidth = lineWidth
layer.strokeColor = strokeColor.CGColor
self.layer.addSublayer(layer)
}
}
結果は次のようになります。とは何
私は以下のコードでこれを達成できましたが、別のアプローチもあるかもしれません。
私はUIView
をカスタムframe
と作成しています。ちょうどframe
を提供するだけで、隣接するセルに基づいて計算することができます。
let cell1 = collectionView.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))
let myView = UIView.init(frame: CGRectMake((cell1?.frame.origin.x)!, ((cell1?.frame.origin.y)! + 50.0), (cell1?.frame.size.width)!*4, 10))
myView.backgroundColor = UIColor.blueColor()
collectionView.addSubview(myView)
collectionView.bringSubviewToFront(myView)
これは、height 10.0
の行を描画します。これがあなたに役立つかどうか私に教えてください。
私はこれを打ち、あなたに知らせるでしょう。ありがとう! – meowmeowmeow
あなたのユースケースは?その線は静的か動的か? – Santosh
動的であることを意図しています。ユーザはセルを選択できなければならず、セルが隣接している場合はそれらの間に線が現れます。 – meowmeowmeow
これで適切な 'height'を持つ' UIView'を追加し、それを 'subView'として' collectionView'に追加し、それを 'bringSubViewToFront'にすることができます。 – Santosh