簡體   English   中英

Swift Button.setText不適用於漸變

[英]Swift Button.setText doesn't work with gradient

我是Swift的新手,我遇到了問題。 如果我嘗試使用漸變,我的按鈕不會設置文本。 這是我的代碼:

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)

添加子圖層與添加子視圖的工作方式相同,因此添加漸變圖層可能會覆蓋繪制文本的其他圖層。

如果刪除此行,它是否有效?

LoginButton.layer.addSublayer(gradient)

如果是這樣,請嘗試查看LoginButton.layer.sublayers有多少層,並嘗試使用以下方法之一將漸變層插入其中一個子層(無論它看起來最好)的后面:

-insertSublayer:above:
-insertSublayer:below:
-insertSublayer:atIndex:

這一行是問題所在:

LoginButton.layer.addSublayer(gradient)

不要向UIButton添加任何額外的圖層。 它已經知道如何繪制自己。 如果您希望它具有漸變背景,請將漸變繪制到圖像中,並以正常方式將其設置為按鈕的背景圖像。

或者清除按鈕並將漸變層放在按鈕后面 (雖然這不是很好)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM