2016-08-26 8 views
1

私はSwiftで新しく問題があります。私のボタンは、グラデーションを使用しようとするとテキストを設定しません。ここに私のコードである:Swift Button.setTextはグラデーションでは機能しません

let gradient:CAGradientLayer = CAGradientLayer() 
    let colorBottom = UIColor(red: 9/255.0, green: 137/255.0, blue: 133/255.0, alpha: 1.0).CGColor 
    let colorTop = UIColor(red: 222.0/255.0, green: 255.0/255.0, blue: 201.0/255.0, alpha: 1.0).CGColor 

    gradient.colors = [colorTop, colorBottom] 
    gradient.startPoint = CGPoint(x: 0.0, y: 0.5) 
    gradient.endPoint = CGPoint(x: 1.0, y: 0.5) 
    gradient.frame = LoginButton.bounds 
    gradient.cornerRadius = 25.0 


    LoginButton.layer.addSublayer(gradient) 
    LoginButton.setTitle("Login", forState: UIControlState.Normal) 
    LoginButton.setTitleColor(UIColor.blackColor(), forState: .Normal) 


    self.view.addSubview(LoginButton) 
+0

あなたは、ボタンの背景やテキスト – RyanM

+0

@techedryanテキスト –

+0

が – RyanM

答えて

0

サブレイヤを追加するので、サブビューを追加傾斜層は、テキストが描画されている他の層を被覆することができる追加と同じように動作します。

この行を削除すると機能しますか?

LoginButton.layer.addSublayer(gradient) 

それは、次のいずれかの方法を使用して(それが最高に見える場所)LoginButton.layer.sublayersにあり、それらのサブレイヤの1の後ろに勾配層を挿入してみてくださいどのように多くの層を見てみない場合:

-insertSublayer:above: 
-insertSublayer:below: 
-insertSublayer:atIndex: 
+1

そうです。私はサブレイヤーにも入っていて、動作します:LoginButton.layer.insertSublayer(gradient、atIndex:0) –

0

この行は問題です:

LoginButton.layer.addSublayer(gradient) 

はUIButtonに余分なレイヤを追加しないでください。既にそれを描く方法を知っています。グラデーションの背景が必要な場合は、グラデーションを画像に描画し、ボタンの背景画像として通常の方法で設定します。

ボタンをクリアして、グラデーションレイヤーの後ろにボタンを置きます(これはあまり良くありませんが)。

関連する問題