私はMaterialView
をサブクラス化し、drawRect
をオーバーライドしてカスタムビューを作成し、それをtableViewFooterとして追加します。タイトルによれば、私は深く働くことはできません。私はclipsToBounds
とmasksToBounds
をさまざまなレイヤー/ビューで成功させずに使いこなしました。私のコードを明確にするために、UIViewControllerの中のtableViewです。サブクラス化されたMaterialViewはMaterialDepthを表示していません
ReceiptEdge
のための私のコード
override func prepareView() {
super.prepareView()
let rect = self.frame
let path = UIBezierPath()
let receiptEdgeSize = CGFloat(rect.width/75)
var x = CGFloat(-receiptEdgeSize/2)
let y = rect.size.height/2
path.moveToPoint(CGPoint(x: x, y: y))
while x < rect.width {
x += receiptEdgeSize
path.addLineToPoint(CGPoint(x: x, y: y))
x += receiptEdgeSize
path.addArcWithCenter(CGPoint(x: x, y: y), radius: receiptEdgeSize, startAngle: CGFloat(M_PI), endAngle: CGFloat(0), clockwise: true)
x += receiptEdgeSize
}
path.addLineToPoint(CGPoint(x: x, y: CGFloat(0)))
path.addLineToPoint(CGPoint(x: 0, y: 0))
path.addLineToPoint(CGPoint(x: 0, y: y))
let layer = CAShapeLayer()
layer.path = path.CGPath
self.layer.mask = layer
self.visualLayer.mask = layer
self.visualLayer.backgroundColor = UIColor.blueColor().CGColor
self.layer.shadowColor = UIColor.redColor().CGColor
}
何の深さに私よりも多くの層について知っている誰かのために事前に
感謝を示さないスクリーンショット
let receiptEdge = ReceiptEdge(frame: CGRect(x: 0, y: 0, width: self.view.w, height: 30))
receiptEdge.backgroundColor = .whiteColor()
receiptEdge.depth = MaterialDepth.Depth5
//What I've tried messing with for an hour
receiptEdge.clipsToBounds = false
receiptEdge.layer.masksToBounds = true
self.tableView.clipsToBounds = false
self.view.clipsToBounds = false
self.view.layer.masksToBounds = true
self.tableView.layer.masksToBounds = true
self.tableView.tableFooterView = receiptEdge
!ここ 私はここMaterialDepth.Depth2
を用いMaterialTableViewCell
のサブクラスで動作する深さを得ている図の一例であり、ここに私が設定visualLayer
の同一の経路を有するlayer
でありますself.layer
へのレイヤーまたはパスはありません。影がありますが、ビジュアルレイヤーにクリッピングしないビューまたはシャドウがあります。違いを見ることができるようにshadowColorを赤に設定します。
「MaterialLayer」クラスが何であるか疑問に思っている人にとって、私は[this](https://github.com/CosmicMind/Material)フレームワークを使用しており、プロジェクト全体を通して様々なビューで作業するための深みを持っています。 – NSGangster