我有一個簡單的計算器用戶界面,其中我試圖以編程方式將梯度添加到結果/輸出標籤的背景。問題是你只能使用子視圖,如果你仍然想在前面展示。但是當我這樣做時,界面會在屏幕上變形。當我添加一個子視圖時屏幕扭曲
下面是兩個計算器線程使用的子視圖的類似地雷的任務這表明:
Adding a CGGradient as sublayer to UILabel hides the text of label
我使用添加通過子視圖漸變中的代碼是基於上述解決方案:
let gradientLayer = CAGradientLayer()
gradientLayer.frame = CGRectMake(1, 1, resultLabel.frame.width-2, resultLabel.frame.height-2) //resultLabel.bounds
gradientLayer.colors = [UIColor.greenColor().CGColor as CGColorRef, UIColor.blueColor().CGColor as CGColorRef]
gradientLayer.locations = [0.0, 1.0]
var labelBackground = UIView(frame: resultLabel.frame)
resultLabel.backgroundColor = UIColor.clearColor()
resultLabel.frame = resultLabel.bounds
labelBackground.layer.addSublayer(gradientLayer)
labelBackground.addSubview(resultLabel)
self.view.addSubview(labelBackground)
儘管它應用了所需的漸變,顯示器仍然是dist滔滔不絕。
我使用雨燕2.2和Xcode 7.3.1
我在做什麼錯?
通過子視圖添加漸變之前:
後:
是不是在'CALayer'級完成梯度? –
確實如此,但對於UILabel,如果僅將CALayer添加爲子圖層,則會隱藏標籤文本(因此您只能看到漸變)。子視圖方法用於添加漸變圖層,同時還將標籤文本保留在前面。 – Ahmad
你已經試過'insertSublayer(_:CALayer,下面:CALayer)'或'insertSublayer(_:CALayer,atIndex:Int)'嗎? –