2017-04-03 1 views
0

UILabelの最後の5 pxをフェードアウトしたい。ラベルは1行を超えることはできません。 私は以下の機能を持っています。UILabelで最後の5 pxのテキストをフェードアウトする

func addFadeOut() { 
     let gradient = CAGradientLayer() 
     gradient.frame = self.bounds 
     gradient.colors = [self.theme.darkJungleGreenColor().cgColor, self.theme.darkJungleGreenColor().withAlphaComponent(0.1).cgColor] 

     gradient.startPoint = CGPoint.init(x: 0.95, y: 1) 
     gradient.endPoint = CGPoint.init(x: 1, y: 1) 
     self.layer.mask = gradient 
    } 

開始者とエンドポイントの解釈方法を教えてもらえますか?

+0

5ピクセル幅の半透明イメージを追加します。それは最も簡単なオプションです。 – Sulthan

答えて

2

ラベルの幅と高さから開始点と終了点を計算できます。

func addFadeOut() { 
     let gradient = CAGradientLayer() 
     gradient.frame = self.bounds 
     gradient.colors = [self.theme.darkJungleGreenColor().cgColor, UIColor.clear.cgColor] 

     //Get Height and width 
     var width = self.bounds.size.width 
     var height = self.bounds.size.height 

     //Calculate the start points and end points 
     var startPointX = (width-5)/width 
     var startPointY = (height/2)/height 
     var endPointX = 1 
     var endPointY = (height/2)/height 

     gradient.startPoint = CGPoint(x: startPointX, y: startPointY) 
     gradient.endPoint = CGPoint(x: endPointX, y: endPointY) 
     self.layer.mask = gradient 
    } 
+0

開始点と終了点が0〜1の間にありませんか?正しい? – Steaphann

+0

計算結果は常に0〜1の範囲で計算されます。 –

+0

Modulo(%)は0から1の間のリマインダー値を与えます –

関連する問題