2017-09-11 10 views
2

インナーシャドウ効果私はこのUIlabelに内側の影を追加したいのUIView

画像:

:私はこのような結果を得たInner shadow effect on UIView layer?

let display = UILabel() 

func setBackgroundLayer() { 
    let backgroundLayer = CAGradientLayer() 
    backgroundLayer.frame = view.bounds 
    backgroundLayer.colors = [UIColor(white:1,alpha:0.5).cgColor,UIColor(white:0.5,alpha:0.5).cgColor] 
    view.layer.insertSublayer(backgroundLayer, at: 0) 
} 

func setDisplay() { 
    let Xratio = view.bounds.width/8 
    display.frame = CGRect(x:Xratio,y:80,width:Xratio*6,height:Xratio*2) 
    display.backgroundColor = UIColor(red:204/255,green:203/255,blue:181/255,alpha:1) 
    view.addSubview(display) 

} 

func displayInnerShadow() { 


    let shadowLayer = CAShapeLayer() 
    shadowLayer.frame = view.bounds 

    let path = CGMutablePath() 
    path.addRect(display.frame.insetBy(dx: -20, dy: -20)) 
    path.addRect(display.frame) 


    shadowLayer.fillRule = kCAFillRuleEvenOdd 
    shadowLayer.path = path 

    shadowLayer.shadowColor = UIColor(white:0,alpha:1).cgColor 
    shadowLayer.shadowOffset = CGSize(width:0,height:0) 
    shadowLayer.shadowOpacity = 1 
    shadowLayer.shadowRadius = 5 

    view.layer.insertSublayer(shadowLayer, at: 1) 

} 



override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    setBackgroundLayer() 
    setDisplay() 
    //displayInnerShadow() 
} 

picture

参照形式result picture

なぜ機能しないのですか、塗りつぶしの色を設定する方法はありますか?

+0

を試してみてください –

+0

申し訳ありませんが、UIlabelは写真の緑色の矩形になっています – jin

答えて

1

標識である場合、「私はこのUIlabelに内側の影を追加したい」?この

let display = UILabel() 

func setBackgroundLayer() { 
    let backgroundLayer = CAGradientLayer() 
    backgroundLayer.frame = view.bounds 
    backgroundLayer.colors = [UIColor(white:1,alpha:0.5).cgColor,UIColor(white:0.5,alpha:0.5).cgColor] 
    view.layer.insertSublayer(backgroundLayer, at: 0) 
} 

func setDisplay() { 
    let Xratio = view.bounds.width/8 
    display.frame = CGRect(x:Xratio,y:80,width:Xratio*6,height:Xratio*2) 

セット層の背景色の代わりに、display.backgroundColor

display.layer.backgroundColor = UIColor(red:204/255,green:203/255,blue:181/255,alpha:1).cgColor 
    view.addSubview(display) 

} 

func displayInnerShadow() { 

    let innerShadowLayer = CALayer() 
    innerShadowLayer.frame = display.bounds 
    let path = UIBezierPath(rect: innerShadowLayer.bounds.insetBy(dx: -20, dy: -20)) 
    let innerPart = UIBezierPath(rect: innerShadowLayer.bounds).reversing() 
    path.append(innerPart) 
    innerShadowLayer.shadowPath = path.cgPath 
    innerShadowLayer.masksToBounds = true 
    innerShadowLayer.shadowColor = UIColor.black.cgColor 
    innerShadowLayer.shadowOffset = CGSize.zero 
    innerShadowLayer.shadowOpacity = 1 
    innerShadowLayer.shadowRadius = 5 
    display.layer.addSublayer(innerShadowLayer) 
} 


override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    setDisplay() 
    setBackgroundLayer() 
    displayInnerShadow() 

} 
+0

なぜか分かりませんでしたが、まだ最初の写真と影が表示されません – jin

+0

実装済みの回答でコードを表示できますか? –

+0

私は質問を更新し、私はすべてあなたの答えをコピーし、 'ラベル'を '表示'に変更します – jin

関連する問題